(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024134441
(43)【公開日】2024-10-03
(54)【発明の名称】メモリシステム及び不揮発性メモリを制御する方法
(51)【国際特許分類】
G06F 12/02 20060101AFI20240926BHJP
G06F 12/00 20060101ALI20240926BHJP
【FI】
G06F12/02 570A
G06F12/00 597U
【審査請求】未請求
【請求項の数】12
【出願形態】OL
(21)【出願番号】P 2023044749
(22)【出願日】2023-03-20
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110000408
【氏名又は名称】弁理士法人高橋・林アンドパートナーズ
(72)【発明者】
【氏名】朴 勇範
(72)【発明者】
【氏名】松川 伸一
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160AA08
5B160AA10
5B160AB26
(57)【要約】
【課題】メモリシステムの読み出し動作を高速化させること。
【解決手段】ホストと接続可能なメモリシステムであって、各々が複数のページを含む不揮発性メモリと、各々が前記ホストから受信した複数のライトコマンドの各々で指定された複数のデータを前記不揮発性メモリに書き込むメモリコントローラと、を備え、前記ホストは、前記複数のライトコマンドの各々に同一の設定情報を付与し、前記メモリコントローラは、前記同一の設定情報に基づき、前記複数のデータを、前記複数のページのうち、連続する複数のアドレスに対応する複数のページに書き込む。
【選択図】
図10
【特許請求の範囲】
【請求項1】
ホストと接続可能であって、
各々が複数のページを含む不揮発性メモリと、
各々が前記ホストから受信した複数のライトコマンドの各々で指定された複数のデータを前記不揮発性メモリに書き込むメモリコントローラと、
を備え、
前記ホストは、前記複数のライトコマンドの各々に同一の設定情報を付与し、
前記メモリコントローラは、前記同一の設定情報に基づき、前記複数のデータを、前記複数のページのうち、連続する複数のアドレスに対応する複数のページに書き込む、
メモリシステム。
【請求項2】
前記複数のデータは、少なくとも第1のデータ及び第2のデータを含み、
前記同一の設定情報は、第1のフラグを含み、
前記第1のフラグは、前記第2のデータが前記第1のデータに連続するデータであることを、前記第2のデータに付与する、
請求項1に記載のメモリシステム。
【請求項3】
前記複数のデータは、第3のデータをさらに含み、
前記第1のフラグは、前記第3のデータが前記第2のデータに連続するデータであること、及び、前記第3のデータが最後のデータであることを、前記第3のデータに付与する、
請求項2に記載のメモリシステム。
【請求項4】
前記メモリコントローラは、ガベージコレクションを実行したあと、前記連続する複数のアドレスに対応する複数のページに書き込む処理を実行する、
請求項1に記載のメモリシステム。
【請求項5】
前記複数のデータは、少なくとも第1のデータ及び第2のデータを含み、
前記同一の設定情報は、第2のフラグを含み、
前記第2のフラグは、前記複数のデータが同一のグループに属することを示す設定情報を含み、
前記第2のフラグは、前記第2のデータが前記第1のデータに連続するデータであることを、前記第2のデータに付与する、
請求項1に記載のメモリシステム。
【請求項6】
前記第2のフラグは、前記複数のデータを前記不揮発性メモリから読み出す順番を示す設定情報を含む、
請求項5に記載のメモリシステム。
【請求項7】
前記複数のデータは、少なくとも第1のデータ及び第2のデータを含み、
前記同一の設定情報は、前記第1のデータ及び前記第2のデータを連結することを示す動作コードと、前記第1のデータのスタートアドレスと、前記第2のデータのスタートアドレスと、を含む、
請求項1に記載のメモリシステム。
【請求項8】
前記第1のデータのスタートアドレスは前記第2のデータのスタートアドレスより小さく、
前記不揮発性メモリは、前記第1のデータを前記第2のデータより先に格納し、前記第1のデータを前記第2のデータより先に読み出す、
請求項7に記載のメモリシステム。
【請求項9】
ホストと接続可能であって、
各々が複数のページを含む不揮発性メモリと、
各々が前記ホストから受信した複数のライトコマンドの各々で指定された複数のデータを前記不揮発性メモリに書き込むメモリコントローラと、を備え、
前記ホストは、前記複数のライトコマンドの各々に同一のグループに属する設定情報を付与し、
前記メモリコントローラは、前記同一のグループに属する設定情報に基づき、前記複数のデータを、前記複数のページのうち、連続する複数のアドレスに対応する複数のページに書き込み、前記書き込みのあとに、前記不揮発性メモリに格納されたファイルシステムを定期的に読み出し、前記ファイルシステムを解析し、前記ファイルシステムに含まれるタイムスタンプを取得する、
メモリシステム。
【請求項10】
前記メモリコントローラは、前記ファイルシステムに含まれるタイムスタンプが新規に記録された又は更新されたものであると判断した場合に、前記タイムスタンプに対応する時刻情報を不揮発性メモリに格納する、請求項9に記載のメモリシステム。
【請求項11】
前記メモリコントローラは、前記時刻情報を読み出し、前記複数のデータのうち更新されたデータ、及び、更新されたデータが書き込まれたページを確認する、請求項10に記載のメモリシステム。
【請求項12】
各々が複数のページを含む不揮発性メモリを制御する方法であって、前記方法は、
各々がホストから受信した複数のライトコマンドの各々で指定された複数のデータを前記不揮発性メモリに書き込む書き込み動作を実行する、
ことを備え、
前記複数のライトコマンドの各々には同一の設定情報が付与されており、
前記書き込み動作は、前記同一の設定情報に基づき、前記複数のデータを、前記複数のページのうち、連続する複数のアドレスに対応する複数のページに書き込むことを含む、
方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の実施形態は不揮発性メモリを備えるメモリシステムに関する。
【背景技術】
【0002】
近年、不揮発性メモリを備えるメモリシステムが広く普及している。このようなメモリシステムでは、不揮発性メモリとしてNAND型フラッシュメモリが使用される。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】米国特許第10120606号明細書
【特許文献2】米国特許出願公開第2021/0247920号明細書
【特許文献3】米国特許出願公開第2018/0173620号明細書
【発明の概要】
【発明が解決しようとする課題】
【0004】
本開示は、メモリシステムの読み出し動作を高速化させることを目的とする。
【課題を解決するための手段】
【0005】
本実施形態に係るメモリシステムは、ホストと接続可能なメモリシステムであって、前記メモリシステムは、各々が複数のページを含む不揮発性メモリと、各々が前記ホストから受信した複数のライトコマンドの各々で指定された複数のデータを前記不揮発性メモリに書き込むメモリコントローラと、を備え、前記ホストは、前記複数のライトコマンドの各々に同一の設定情報を付与し、前記メモリコントローラは、前記同一の設定情報に基づき、前記複数のデータを、前記複数のページのうち、連続する複数のアドレスに対応する複数のページに書き込む。
【0006】
本実施形態に係るメモリシステムは、ホストと接続可能であって、各々が複数のページを含む不揮発性メモリと、各々が前記ホストから受信した複数のライトコマンドの各々で指定された複数のデータを前記不揮発性メモリに書き込むメモリコントローラと、を備え、前記ホストは、前記複数のライトコマンドの各々に同一のグループに属する設定情報を付与し、前記メモリコントローラは、前記同一のグループに属する設定情報に基づき、前記複数のデータを、前記複数のページのうち、連続する複数のアドレスに対応する複数のページに書き込み、前記書き込み動作のあとに、前記不揮発性メモリに格納されたファイルシステムを定期的に読み出し、前記ファイルシステムを解析し、前記ファイルシステムに含まれるタイムスタンプを取得する。
【0007】
本実施形態に係る不揮発性メモリを制御する方法は、各々が前記ホストから受信した複数のライトコマンドの各々で指定された複数のデータを前記不揮発性メモリに書き込む書き込み動作を実行すること、を備え、前記複数のライトコマンドの各々には同一の設定情報が付与されており、前記書き込み動作は、前記同一の設定情報に基づき、前記複数のデータを、前記複数のページのうち、連続する複数のアドレスに対応する複数のページに書き込むこと、を含む。
【図面の簡単な説明】
【0008】
【
図1】第1実施形態に係るメモリシステム及びホストの構成を示すブロック図である。
【
図2】第1実施形態に係るアプリケーションファイルの構成を示す図である。
【
図3A】第1実施形態に係る実データ部及びテーブル部の構成を示す図である。
【
図3B】第1実施形態に係る実データ部の構成を示す図である。
【
図3C】第1実施形態に係るテーブル部の構成を示す図である。
【
図3D】第1実施形態に係るテーブル部の構成を示す図である。
【
図4】第1実施形態に係るアプリケーションファイルの構成を示す図である。
【
図5】第1実施形態に係る実データ部の構成を示す図である。
【
図6】第1実施形態に係るテーブル部の構成を示す図である。
【
図7A】第1実施形態に係る実データ部の構成を示す図である。
【
図7B】第1実施形態に係るテーブル部の構成を示す図である。
【
図7C】第1実施形態に係るテーブル部の構成を示す図である。
【
図8】第1実施形態に係るコマンドの構成を示す図である。
【
図9A】第1実施形態に係るメモリシステムの動作シーケンスの一例を示す図である。
【
図9B】第1実施形態に係るコマンドの設定の一例を示す図である。
【
図10】第1実施形態に係るメモリシステムの動作方法を示すフローチャートである。
【
図11】第2実施形態に係るコマンドの構成を示す図である。
【
図12】第2実施形態に係るアプリケーションコード及びデータオーダーの設定の一例を示す図である。
【
図13】第2実施形態に係るメモリシステムの動作方法を示すフローチャートである。
【
図14】第2実施形態に係るメモリシステムの動作方法を示すフローチャートである。
【
図15】第3実施形態に係るメモリシステム及びホストの機能ブロック図である。
【
図16】第3実施形態に係るメモリシステムの動作方法を示すフローチャートである。
【
図17A】第3実施形態に係るタイムスタンプテーブルの構成を示す図である。
【
図17B】第3実施形態に係る実データ部の構成を示す図である。
【
図17C】第3実施形態に係るテーブル部の構成を示す図である。
【
図17D】第3実施形態に係る実データ部の構成を示す図である。
【
図17E】第3実施形態に係るテーブル部の構成を示す図である。
【
図17F】第3実施形態に係る実データ部の構成を示す図である。
【
図17G】第3実施形態に係るテーブル部の構成を示す図である。
【
図18】第4実施形態に係るメモリシステム及びホストの機能ブロック図である。
【
図19】第4実施形態に係るアプリケーションファイルの構成を示す図である。
【
図20】第4実施形態に係るコマンドの構成を示す図である。
【
図21】第4実施形態に係るメモリシステムの動作方法を示すフローチャートである。
【
図22】第4実施形態に係るコマンドの設定の一例を示す図である。
【
図23】第4実施形態に係る実データ部の構成を示す図である。
【
図24】第4実施形態に係るテーブル部の構成を示す図である。
【
図25】第5実施形態に係るメモリシステム及びホストの機能ブロック図である。
【
図26】第5実施形態に係るアプリケーションファイルの構成を示す図である。
【
図27】第4実施形態に係るメモリシステムの動作方法を示すフローチャートである。
【
図28A】第5実施形態に係る実データ部の構成を示す図である。
【
図28B】第5実施形態に係るテーブル部の構成を示す図である。
【
図28C】第5実施形態に係る実データ部の構成を示す図である。
【
図28D】第5実施形態に係るテーブル部の構成を示す図である。
【
図29】第5実施形態に係るテーブル部の構成を示す図である。
【発明を実施するための形態】
【0009】
以下、各実施形態のメモリシステムについて、図面を参照して説明する。以下の説明において、同一、又は類似する機能及び構成を有する構成要素については、共通する参照符号を付す。共通する参照符号を有する複数の構成要素を区別する場合、当該共通する参照符号に添え字(、例えば、アルファベットの大文字、数字、ハイフンとアルファベットの大文字と数字など)を付して区別し、重複する説明が省略される場合がある。
【0010】
<第1実施形態>
第1実施形態に係るメモリシステム1について説明する。メモリシステム1は、不揮発性メモリ20と、不揮発性メモリ20を制御するメモリコントローラ10と、を含む。不揮発性メモリ20は、半導体記憶装置の一例であり、例えば、NAND型フラッシュメモリである。
【0011】
<1-1.メモリシステム1の全体構成>
図1~
図3を参照し、メモリシステム1の全体構成を説明する。
図1は、メモリシステム1の構成を説明するためのブロック図である。
図2は、ホスト30に設置されるアプリケーション32により作成されるデータの構成を示す図である。換言すると、
図2は、ホスト30に設置されるアプリケーション32を構成しているファイルを示す図である。
図3Aは、メモリ部23に含まれる実データ部300及びテーブル部400の構成を示す図であり、
図3Bは実データ部300の構成を示す図であり、
図3Cはテーブル部400の構成を示す図である。
【0012】
メモリシステム1の不揮発性メモリ20は、複数のメモリセルを含む。メモリシステム1は、ホスト30と接続可能である。
図1のメモリシステム1はホスト30と接続されている。
【0013】
メモリシステム1は、例えば、メモリコントローラ10と不揮発性メモリ20とが1つのパッケージとして構成されるSDTMカードのようなメモリカードであってよく、UFS(Universal Flash Storage)であってよく、SSD(Solid State Drive)であってもよい。
【0014】
ホスト30は、例えば、パーソナルコンピュータ、携帯端末などの電子機器である。ホスト30は、例えば、プロセッサ及びメモリを備える。プロセッサは、メモリにロードされる様々なプログラムを実行するように構成されている。様々なプログラムは、例えば、オペレーティングシステム(Operatig System、OS)、OSに実装されたファイルシステム及びアプリケーション(Application)32などを含む。アプリケーション32により作成されるデータはアプリケーションファイルデータ(Application File Data、AFD)321を含む。AFD321は複数のファイルデータを含む。ホスト30のOSは、例えば、AFDの生成、保存、更新、削除等を管理する。アプリケーション32は、例えば、OSを介してメモリシステム1とデータ(実データ)のやり取りを行うように構成されている。データ(実データ)はファイルデータとして保存される。
【0015】
<1-2.不揮発性メモリ20の構成>
不揮発性メモリ20は、データを不揮発に記憶する不揮発性メモリである。不揮発性メモリ20は、例えば、NAND型フラッシュメモリ(以下、単にNANDメモリという)である。メモリシステム1では、不揮発性メモリ20としてNANDメモリが用いられた場合を例示するが、不揮発性メモリ20として3次元構造フラッシュメモリ、ReRAM(Resistance Random Access Memory)、FeRAM(Ferroelectric Random Access Memory)等のNANDメモリ以外の不揮発性メモリを用いることができる。メモリシステム1には、種々な記憶媒体を適用することができる。
【0016】
不揮発性メモリ20には、ホスト30から送信されるデータ(実データ)、メモリシステム1の管理情報、及びファームウェアなどが格納される。データは、例えば、AFD321である。詳細は後述されるが、管理情報は、アプリケーションID、タイムスタンプ、アドレス物理アドレス変換テーブルに含まれる論理アドレス、物理アドレス及びページ番号などを含む。また、管理情報は、後述されるタイムスタンプ、時刻、累積リード量及び累積ライト量を含んでよい。ファームウェアは、メモリコントローラ10の機能の少なくとも一部を制御するプロセッサ11を動作させる。ファームウェアの一部は、ROM10に格納されてもよい。
【0017】
不揮発性メモリ20は、複数のメモリチップ21を含む。メモリコントローラ10は複数のメモリチップ21の各々を制御する。具体的には、メモリコントローラ10は、メモリチップ21の各々に対してデータの書き込み動作、読み出し動作、及び消去動作を実行する。複数のメモリチップ21の各々は、NANDバスを介してメモリコントローラ10に接続されている。
【0018】
各々のメモリチップ21は、複数のダイ22を含む。ダイ22は、メモリセルが形成されたウェハ単位を意味する。複数のダイ22が積層されることでメモリチップ21が構成されている。
【0019】
各々のダイ22には、複数のメモリ部23が設けられている。メモリ部23は複数のページで構成されている。メモリ部23は、実データ部300及びテーブル部400を含む(
図3A)。
【0020】
実データ部300は、複数のメモリブロックMBx(MB1、MB2、MB3、MB4、・・・)(
図3A、
図3B)を含む。複数のメモリブロックMBは、AFD321、ファームウェアなどを含む。メモリブロックMBはデータの消去単位である。メモリブロックMBに設けられた全てのメモリセルトランジスタは同じソース線に接続されている。メモリブロックMBの1つの単位を「物理ブロック」という場合がある。
【0021】
NANDメモリでは、一般に、「ページ」と呼ばれるデータ単位で書き込み動作及び読み出し動作が実行され、上記の物理ブロックのデータ単位で消去が実行される。メモリシステム1では、メモリ素子の最小単位であるメモリセルトランジスタを単に「メモリセル」という場合があり、物理ブロック中におけるメモリセルの位置を「物理アドレス」という場合がある。また、メモリシステム1では、「ページ」は書き込み動作における最小単位を意味する。同一のワード線に接続される複数のメモリセルを「メモリセルグループ」という。メモリセルがSLC(Single Level Cell)である場合は、1つのメモリセルグループによって1ページが構成される。1つのメモリセルグループによって2ページが構成されるMLC(Multi Level Cell)、1つのメモリセルグループによって3ページが構成されるTLC(Triple Level Cell)、又は1つのメモリセルグループによって4ページが構成されるQLC(Quad Level Cell)などの多ビットセルである場合、1つのメモリセルグループが複数ページに対応する。各メモリセルはワード線及びビット線の両方に接続される。したがって、ワード線を識別するアドレスとビット線を識別するアドレスとを用いて各メモリセルを識別することが可能である。
【0022】
テーブル部400は、複数の論理アドレス物理アドレス変換テーブルを含む。論理アドレス物理アドレス変換テーブルには、ホスト30から受信したデータの論理アドレスと、当該データが格納された不揮発性メモリ20上の実データ部300のページを示す物理アドレスとが対応付けられている。論理(Logical)アドレス物理(Physical)アドレス変換テーブルは、通称、L2Pテーブルといわれる。論理アドレス、物理アドレス及びページ番号などが管理情報である。
【0023】
<1-3.メモリコントローラ10の構成>
メモリコントローラ10は、例えば、SoC(System On a Chip)として構成される半導体集積回路である。
【0024】
メモリコントローラ10は、ホスト30からの書き込み要求に従って不揮発性メモリ20への書き込み動作を制御し、ホスト30からの読み出し要求に従って不揮発性メモリ20からの読み出し動作を制御し、ホスト30からの消去要求に従って不揮発性メモリ20への消去動作を制御する。メモリコントローラ10は、ホストインターフェース(ホストI/F)17、RAM12、ROM13、プロセッサ11、ECC15、及びメモリI/F(メモリI/F)18などの機能ブロックを備える。これらの機能ブロックは内部バス19で相互に接続されている。
【0025】
ホストI/F17は、ホスト30から、書き込み要求、読み出し要求、又は消去要求を受信し、ホスト30とホストI/F17との間のインターフェース規格に従った処理を実行する。ホストI/F17は、不揮発性メモリ20から読み出されたデータをホスト30へ送信し、プロセッサ11からの応答などをホスト30へ送信する。なお、書き込み要求は、例えば、ライトコマンドWCMD、ライトアドレス、ライトデータ(例えば、AFD321)を含む。読み出し要求は、例えば、リードコマンドRCMD、リードアドレスを含む。消去要求は、例えば、イレースコマンドERCMD、イレースアドレスを含む。
【0026】
インターフェース規格は、例えば、スモールコンピュータシステムインターフェース(SCSI)であってよく、シリアルSCSI(SAS)インターフェースであってもよい。また、インターフェース規格は、ユニバーサルシリアルバス(USB)、アドバンスドテクノロジーアタッチメント(ATA)、シリアルATAなどの高速通信規格であってもよい。
【0027】
RAM12は、例えばデータバッファとして使用され、メモリコントローラ10がホスト30から受信したデータを不揮発性メモリ20へ格納させるまでに一時的に保持する。RAM12は、不揮発性メモリ20から読み出したデータをホスト30へ送信するまでの間に一時的に保持する。また、RAM12では、各コマンドに基づき不揮発性メモリ20から読み出されたL2Pテーブルなどが展開される。RAM12として、例えば、SRAM(Static Random Access Memory)又はDRAM(Dynamic Random Access Memory)などの汎用メモリを用いることができる。
【0028】
ROM13は、メモリコントローラ10を動作させるための種々のプログラムやパラメータ等を格納する。ROM13に格納されているプログラムやパラメータ等は、必要に応じてプロセッサ11に読み出されて実行される。
【0029】
プロセッサ11は、メモリシステム1の各機能ブロックを統括的に制御する制御部である。プロセッサ11は、データ管理部110及び書き込み/読み出し(W/R)管理部111を含む。データ管理部110の機能は、ハードウェアによって実現されてよく、ファームウェアを実行するCPUによって実現されてもよい。W/R管理部111の機能は、ハードウェアによって実現されてよく、ファームウェアを実行するCPUによって実現されてもよい。
【0030】
プロセッサ11は、ホスト30からの要求をホストI/F17経由で受け付けた場合に、データ管理部110及びW/R管理部111を用いて、その要求に応じた制御を行う。
【0031】
メモリI/F18は、プロセッサ11の指示に基づいて、不揮発性メモリ20への書き込み動作、読み出し動作及び消去動作を実行する。メモリI/F18は、プロセッサ11の指示に基づいて、その他の動作、例えば、第1のコマンドに基づく動作を実行してもよい。
【0032】
例えば、プロセッサ11は、ホスト30からの書き込み要求に応じて、不揮発性メモリ20へのデータの書き込み動作をメモリI/F18へ指示する。例えば、ホスト30からの書き込み要求に応じて、データ管理部110が、テーブル部400に含まれるL2Pテーブルを用いて、RAM12に一時的に保持されている書き込み対象のデータに対して、不揮発性メモリ20上の書き込み先(実データ部300内のページを示す物理アドレス)を決定する。すなわち、データ管理部110は、書き込み対象のデータ、データの書き込み先を管理する。また、W/R管理部111は、データ管理部110から当該物理アドレスを受信し、当該書き込み対象のデータを当該物理アドレスに書き込むための書き込み動作をメモリI/F18へ指示する。メモリI/F18は、当該書き込み対象のデータ及び当該物理アドレスを不揮発性メモリ20に出力し、当該書き込み対象のデータが当該物理アドレスに対応する実データ部300のページに格納される。なお、ホスト30から受信した当該書き込み対象のデータの論理アドレスと当該書き込み対象のデータが格納された物理アドレスとの対応は、テーブル部400に含まれるL2Pテーブルに格納される。
【0033】
また、プロセッサ11は、ホスト30からの読み出し要求に応じて、不揮発性メモリ20からのデータの読み出し動作をメモリI/F18へ指示する。例えば、ホスト30からの読み出し要求に応じて、データ管理部110が、テーブル部400に含まれるL2Pテーブルを用いて、読み出し対象のデータの論理アドレスに対応する、不揮発性メモリ20上の実データ部300内のページを示す物理アドレスを決定する。すなわち、データ管理部110は、L2Pテーブルを用いて、読み出し対象のデータの論理アドレス、当該論理アドレスに対応する当該物理アドレスを管理する。また、W/R管理部111は、データ管理部110から当該物理アドレスを受信し、当該読み出し対象のデータを当該物理アドレスから読み出すための読み出し動作をメモリI/F18へ指示する。メモリI/F18は、当該読み出し対象のデータ及び当該物理アドレスを不揮発性メモリ20に出力し、当該読み出し対象のデータを当該物理アドレスから読み出す。
【0034】
また、プロセッサ11は、ホスト30からの消去要求に応じて、不揮発性メモリ20へのデータの消去動作をメモリI/F18へ指示する。例えば、ホスト30からの消去要求に応じて、データ管理部110が、テーブル部400に含まれるL2Pテーブルを用いて、消去対象のデータの論理アドレスに対応する不揮発性メモリ20上の実データ部300内のページを示す物理アドレスを決定する。すなわち、データ管理部110は、消去対象のデータの論理アドレス、当該論理アドレスに対応する当該物理アドレスを管理する。また、W/R管理部111は、データ管理部110から当該物理アドレスを受信し、当該消去対象のデータを当該物理アドレスから消去するための消去動作をメモリI/F18へ指示する。メモリI/F18は、当該消去対象のデータ及び当該物理アドレスを不揮発性メモリ20に出力し、当該消去対象のデータを当該物理アドレスから消去する。
【0035】
また、データ管理部110がガベージコレクション(GC)、及びアプリケーションベースの最適化(Application Based Optimization、ABO)処理を実行する。例えば、データ管理部110が後述するフリーブロック(Free Block(FB))の数をカウントし、FBの数が所定の閾値以下の場合には、データ管理部110はGCを実行する。FBの数が所定の閾値より多い場合には、データ管理部110は、GC処理を実行しなくてもよい。
【0036】
ガベージコレクション(GC)は、物理ブロックのうち使用可能なブロックを増加させるための処理で、例えば、有効データ及び無効データが含まれている複数のアクティブブロックから有効データを集めて、別のブロックに書き直し、フリーブロックを確保する処理を意味する。ここで、アクティブブロックは、有効データが記録されている物理ブロックを示す。フリーブロックは、有効データが記録されていない物理ブロックを示す。フリーブロックは、消去後に、消去済みブロックとして再利用可能である。フリーブロックは、有効データが記録されていない消去前のブロックと、消去済みブロックと、の両方を含んでいる。有効データとは、後述する論理アドレスと対応付けられているデータであり、無効データとは論理アドレスが対応付けられていないデータである。消去済みブロックは、データが書き込まれると、アクティブブロックとなる。なお、無効データは、図面では斜線で示される。
【0037】
また、アプリケーションベースの最適化(Application Based Optimization、ABO)処理は、同一のアプリケーションを使用して生成された連続する論理アドレスに対応する複数のアプリケーションデータのそれぞれを、対応する論理アドレスの順に、不揮発性メモリ20の連続する物理アドレスに対応する物理ブロックに格納する処理を意味する。
【0038】
ECC15は、プロセッサ11からの指示に基づいて、書き込み動作時のECC符号化(誤り訂正符号化)及び読み出し動作時のECC復号(誤り訂正復号)を実行する。ECC15の符号化方式として、例えば、LDPC(Low-Density Parity-Check)符号、BCH(Bose-Chaudhuri-Hocquenghem)符号、又はRS(Reed-Solomon)符号を用いた符号化方式を採用することができる。
【0039】
以上のような構成を備えるメモリシステム1では、プロセッサ11は、不揮発性メモリ20への書き込み動作実行時に、不揮発性メモリ20における書き込み対象のデータの書き込み先(実データ部300内のページを示す物理アドレス)を決定し、決定した実データ部300内のページを示す物理アドレスをメモリI/F18へ指示する。例えば、ECC15は、プロセッサ11からの指示に基づいて、書き込み対象のデータをECC符号化する。これにより生成された書き込み対象のデータは、メモリI/F18を介して不揮発性メモリ20の指定されたページに書き込まれる。
【0040】
一方、プロセッサ11は、不揮発性メモリ20に対する読み出し動作時に、不揮発性メモリ20上の物理アドレスを指定し、指定された物理アドレスに応じてメモリセルの読み出し動作の条件を決定してメモリI/F18へ読み出し動作の実行を指示する。プロセッサ11は、ECC15へECC復号の開始を指示する。メモリI/F18は、プロセッサ11の指示に従って、不揮発性メモリ20の指定された物理アドレスに対する読み出し動作を実行し、この読み出し動作によって得られた読み出し対象のデータをECC15に入力する。ECC15は入力された読み出し対象のデータを復号する。この復号に成功した場合、プロセッサ11は、読み出し対象のデータをRAM12に格納する。一方、ECC復号に失敗した場合、プロセッサ11は、例えば、ホスト30へリードエラーを通知する。
【0041】
<1-4.アプリケーション32により作成されるデータの構成>
図2を参照し、アプリケーション32により作成されるデータ構成を説明する。アプリケーション32は、AFD321を含む。アプリケーション32により作成されるデータは、ホスト30の論理アドレスで特定される。論理アドレス空間100では、AFDが論理アドレスに対応付けられている。
【0042】
論理アドレスとしては、例えばLBA(Logical Block Addressing)が用いられる。LBAは、例えば、0000h、0080h、0100h、0180h、0200h、・・・を含む。
【0043】
アプリケーション32により作成されるデータは、例えば、ファイルA(FileA)、ファイルB(FileB)、及びファイルC(FileC)を含む。FileA、FileB、及びFileCは同一のアプリケーションを使用して生成されたファイルデータである。例えば、1つのファイルは32ページで構成され、1ページは4LBAで構成される。FileAは0000h~007Fhに対応付けられ、FileBは0080h~00FFhに対応付けられ、FileCは0100h~017Fhに対応付けられている。なお、第1実施形態では、FileA~FileCは、第1のファイルデータ~第3のファイルデータといわれる。
【0044】
<1-5.実データ部300及びテーブル部400の構成>
図3A~
図3Dを参照し、実データ部300及びテーブル部400の構成を説明する。
図3A~
図3Dは、メモリシステム1が書き込み要求を受信し、ライトコマンドWCMDに基づき、書き込み動作を実行し、AFD321のFileA~FileCが不揮発性メモリ20に格納された実データ部300又はテーブル部400の状態を示す図である。実データ部300は、例えば、4つのメモリブロックMB1~MB4(MBx、x=1~4)を含む(
図3A)。1つのメモリブロックは128ページで構成される(
図3B)。FileAがMB1のページ000~ページ031に格納され、FileBがMB1のページ032~ページ063に格納され、FileCがMB1のページ064~ページ095に格納されている。MB1のページ096~ページ127、MB2の各ページ、MB3の各ページ、及びMB4の各ページにはデータが格納されていない。すなわち、MB1のページ096~ページ127、MB2の各ページ、MB3の各ページ、及びMB4の各ページは、実データ部300及びテーブル部400の物理アドレスと論理アドレスとの対応付けの無いページであり、消去後のページ(Erased Page(EP))である。
【0045】
テーブル部400は、例えば、4つのL2Pテーブル(第1のL2Pテーブル400a、第2のL2Pテーブル400b、第3のL2Pテーブル400c、及び第4のL2Pテーブル400d)を含む(
図3A及び
図3C)。また、必要に応じて、
図3Dに示されるアプリケーション専用のアプリケーション専用L2Pテーブル410が生成されてよい。アプリケーション専用L2Pテーブル410は、同一のアプリケーションを使用して生成されたファイルデータと、当該ファイルデータに対応する論理アドレスとを対応付けるテーブルである。なお、アプリケーションはグループといわれる場合があり、同一のアプリケーションは同一のグループといわれる場合がある。
【0046】
第1のL2Pテーブル400a、第2のL2Pテーブル400b、第3のL2Pテーブル400c、及び第4のL2Pテーブル400dのそれぞれは、メモリシステム1では、128ページ分の物理アドレスと、当該128ページ分の物理アドレスのそれぞれに対応する論理アドレスとを対応付ける。具体的には、メモリシステム1の第1のL2Pテーブル400aでは、物理アドレスのページ000~ページ127と当該物理アドレスのそれぞれに対応する論理アドレスとが対応付けられる。第1のL2Pテーブル400aと同様に、第2のL2Pテーブル400bでは物理アドレスのページ128~ページ255と当該物理アドレスのそれぞれに対応する論理アドレスとが対応付けられ、第3のL2Pテーブル400cでは物理アドレスのページ256~ページ383と当該物理アドレスのそれぞれに対応する論理アドレスとが対応付けられ、第4のL2Pテーブル400dでは物理アドレスのページ384~ページ511の物理アドレスと当該物理アドレスのそれぞれに対応する論理アドレスとが対応付けられる。より具体的には、第1のL2Pテーブル400aは、物理アドレスのページ000~ページ096と論理アドレスの0000h~017Fhとが対応付けられる。また、第1のL2Pテーブル400aの物理アドレスのページ096~ページ127、第2のL2Pテーブル400bの物理アドレスの各ページ、第3のL2Pテーブル400cの物理アドレスの各ページ、第4のL2Pテーブル400dの物理アドレスの各ページ、アプリケーション専用L2Pテーブル410の物理アドレスの各ページの物理アドレスは、論理アドレスとの対応付けの無いページであり、消去後のページ(Erased Page(EP))である。なお、第1実施形態において、第1のL2Pテーブル400a、第2のL2Pテーブル400b、第3のL2Pテーブル400c及び第4のL2Pテーブル400dのLBAがEPとなっている対応付けは存在しなくてもよい。
【0047】
メモリシステム1は、同一のアプリケーション32を使用して生成された、連続する論理アドレス0000h~017Fhに対応するFileA、FileB及びFileCを、論理アドレス0000h~017Fhの順に、不揮発性メモリ20の連続する物理アドレスに対応するページに、格納することができる。
【0048】
<1-6.メモリシステム1の動作方法の第1の例(第1例)>
図2~
図7を参照し、メモリシステム1の動作方法の第1例を説明する。第1例の動作方法は、ホスト30内のアプリケーション32を使用して生成されたファイルデータが更新され、更新されたファイルデータに基づき、メモリシステム1がホスト30から書き込み要求を受信すること、メモリコントローラ10が書き込み要求に基づき書き込み動作を実行すること、及び、データ管理部110がABO処理を実行することを含む。第1例の動作方法は、書き込み動作を実行したのちにデータ管理部110がGCを実行することを含んでよく、GCを実行したのちにデータ管理部110がABO処理を実行することを含んでもよい。
【0049】
図4は、アプリケーション32により作成されたデータが更新された場合における更新後のデータの構成を示す図である。
図5は更新後の実データ部300の構成を示す図である。
図6は更新後のテーブル部400の構成を示す図である。
図7A~
図7CはABO処理後の実データ部300又はテーブル部400の構成を示す図である。メモリシステム1の第1例の動作方法の説明において、
図1~
図3Dと同一、又は類似する構成の説明は省略されることがある。
【0050】
図4を参照し、アプリケーション32により作成されたデータが更新された場合における更新後のデータの構成を説明する。FileB、及び、FileCが、ファイルBU(FileBU)及びファイルCU(FileCU)に更新されている。FileAは、更新前と同様に、0000h~007Fに対応付けられる。FileBUは2000h~207Fhに対応付けられ、FileCUは3000h~307Fhに対応付けられている。
【0051】
図5及び
図6を参照し、更新後の実データ部300及びテーブル部400の構成を説明する。メモリコントローラ10が、ホスト30から、書き込みコマンドWCMD及びライトデータを含む書き込み要求を受信すると、メモリコントローラ10は、書き込みコマンドWCMD及びライトデータに基づき、「1-3.メモリコントローラ10の構成」で説明した書き込み動作を実行する。
【0052】
図5は、例えば、下記の処理が実行された後の実データ部300におけるデータ配置を模式的に示した図である。
ホスト30は、FileA、FileB及びFileCを作成した後、他のデータを作成し、メモリシステム1に送信する。メモリシステム1は、当該他のデータを、メモリブロックMB1のページ096~ページ127に格納する。
その後、ホスト30は、FileBをFileBUに更新し、メモリシステム1に送信する。メモリシステム1は、FileBUを、メモリブロックMB2のページ128~ページ159に格納する。また、ホスト30は、ページ096~ページ127に保存されているデータとは別の他のデータを作成し、メモリシステム1に送信する。メモリシステム1はホスト30から受信した他のデータをメモリブロックMB2のページ160~ページ255に格納する。
その後、ホスト30は、FileCをFileCUに更新し、メモリシステム1に送信する。メモリシステム1は、FileCUを、メモリブロックMB3のページ256~ページ287に格納する。また、ホスト30は、ページ096~ページ127及びページ160~ページ255に保存されているデータとは別の他のデータを作成し、メモリシステム1に送信する。メモリシステム1はホスト30から受信した他のデータをメモリブロックMB3のページ287~ページ351に格納する。ページ032~ページ063に格納されたFileB、及び、ページ064~ページ095に格納されたFileCは、論理アドレスと対応付けされていない無効データとなっている。
【0053】
例えば、
図6に示される更新後のテーブル部400の第1のL2Pテーブル400aでは、更新前と同様に、FileA(物理アドレスのページ000~ページ031)と論理アドレスの0000h~007Fhとが対応付けられており、ページ000~ページ031に格納されたFileAが有効データとなっている。また、第1のL2Pテーブル400aでは、論理アドレスの0080h~017Fhに対応していた物理アドレスのページ032~ページ095に格納されていたFileB及びFileCの対応付けが無くなっており(
図6では無効データと記載)、FileA~FileC、FileBU及びFileCU以外の有効データに対応するLBAに対応付けられた物理アドレスのページ096~ページ127のファイルデータが有効データとなっている。第2のL2Pテーブル400bでは、FileBU(物理アドレスのページ128~ページ159)と論理アドレスの1000h~01007Fhとが対応付けられており、ページ128~ページ159に格納されたFileBUが有効データとなっている。また、FileA~FileC、FileBU及びFileCU以外の有効データに対応する論理アドレスに対応付けられた物理アドレスのページ160~ページ255のファイルデータが有効データとなっている。第3のL2Pテーブル400cでは、FileCU(物理アドレスのページ256~ページ287)と論理アドレスの2000h~207Fhとが対応付けられており、ページ256~ページ287格納されたFileCUが有効データとなっている。また、FileA~FileC、FileBU及びFileCU以外の有効データに対応する論理アドレスに対応付けられた物理アドレスのページ288~ページ351のファイルデータが有効データとなっている。第3のL2Pテーブル400cの各ページの物理アドレス、第4のL2Pテーブル400dの各ページの物理アドレスは、論理アドレスとの対応付けの無いページであり、消去後のページ(Erased Page(EP))である。なお、アプリケーション専用L2Pテーブル410は、更新後も
図3Dと同様の状態である。なお、第1実施形態において、無効となったデータのLBA(斜線の箇所)の対応付けは存在しなくてもよい。
【0054】
図7A~
図7Cを参照し、メモリコントローラ10がABO処理を実行したのちの実データ部300及びテーブル部400の構成を説明する。
図7A~
図7Cを参照したABO処理を実行したのちの実データ部300及びテーブル部400の構成の説明では、
図5、
図6及び
図3Dを参照した実データ部300及びテーブル部400の構成と異なる点を中心に説明する。
【0055】
メモリコントローラ10は、更新データなどの書き込み動作を実行したのち、ABO処理を実行する。例えば、
図7Aに示された実データ部300では、FileAがメモリブロックMB3のページ352~ページ383に格納され、FileBUがメモリブロックMB3のページ384~ページ415に格納され、FileCUがメモリブロックMB3のページ416~ページ447に格納される。ページ000~ページ031に格納されたFileA、ページ128~ページ159に格納されたFileBU及びページ256~ページ287に格納されたFileCUは、論理アドレスと対応付けされていない無効データとなっている。
【0056】
図7Bに示されたテーブル部400の第3のL2Pテーブル400cでは、物理アドレスのページ352~ページ383と論理アドレスの0000h~007Fhとが対応付けられている。第4のL2Pテーブル400dでは、物理アドレスのページ384~ページ415と論理アドレスの1000h~107Fhとが対応付けられており、物理アドレスのページ416~ページ447と論理アドレスの2000h~207Fhとが対応付けられている。第1のL2Pテーブル400aの論理アドレスの0000h~007Fhに対応していた物理アドレスのページ000~ページ031に格納されていたFileA、第2のL2Pテーブル400bの論理アドレスの1000h~107Fhに対応していた物理アドレスのページ128~ページ159に格納されていたFileBU、及び、第3のL2Pテーブル400cの論理アドレスの2000h~207Fhに対応していた物理アドレスのページ256~ページ287に格納されていたFileCUが無効データとなっている。
【0057】
すなわち、メモリコントローラ10がABO処理を実行し、不揮発性メモリ20は、同一のアプリケーション32を使用して生成されたファイルデータ(FileA~FileC)を、実データ部300内の連続する物理アドレスのページ352~447に格納する。また、ABO処理を実行し、不揮発性メモリ20は、同一のアプリケーション32を使用して生成されたFileAが格納された物理アドレスのページ352~447と論理アドレスの0000h~007Fh、FileBが格納された物理アドレスのページ384~415と論理アドレスの1000h~107Fh、及び、FileCが格納された物理アドレスのページ416~447と論理アドレスの2000h~207Fhが、それぞれ対応付けられるように、アプリケーション専用L2Pテーブル410に格納する(
図7C)。
【0058】
メモリシステム1の動作方法の第1例は、AFD321に含まれる複数のアプリケーションデータを、LBAの順に対応付けられた連続する物理アドレスに対応する物理ブロックに格納するABO処理を実行することができる。よって、ホスト30がアプリケーション32を起動する場合に、メモリシステム1からLBAの順に複数のアプリケーションデータを読み出すことができる。
【0059】
メモリシステム1は、GCを実行し、複数のアクティブブロックから有効データ、並びに、複数のページに格納されたAFDを細分化したファイルデータを集めて、別のブロックに書き直し、フリーブロックを確保する場合がある。また、メモリシステム1は、一旦、SLCにAFDを細分化したファイルデータを不揮発性メモリ20に格納したのちに、TLCにAFDを細分化したファイルデータを不揮発性メモリ20に格納し直す動作を実行する場合がある。メモリシステム1のメモリコントローラ10に実装されているABO処理を有しないメモリシステムが、AFDを細分化したファイルデータを用いてアプリケーションを起動する場合には、不揮発性メモリに細分化されて格納されたファイルデータを、不揮発性メモリから読み出す必要がある。よって、メモリシステム1のメモリコントローラ10に実装されているABO処理を有しないメモリシステムでは、メモリシステム1と比べて、細分化されて格納されたファイルデータの読み出しに時間を要する。すなわち、メモリシステム1のメモリコントローラ10に実装されているABO処理を有しないメモリシステムと接続されるホストよるアプリケーションファイルの起動に時間を要する場合がある。
【0060】
一方で、メモリシステム1は、上述のような場合にホスト30がアプリケーション32を起動する場合には、メモリシステム1内の不揮発性メモリ20から、LBA0000h~007Fh、LBA1000h~107FhFileB、及び2000h~207Fhに相当するAFD32(FileA、FileBU及びFileCU)を、連続した物理アドレスに対応するページ352~ページ447から読み出すことができる。よって、メモリシステム1は、メモリシステム1のメモリコントローラ10に実装されているABO処理を有しないメモリシステムと比較して、アプリケーション32を起動する場合のファイルデータの読み出し時間を短くすることができる。すなわち、メモリシステム1は、アプリケーション32を起動する場合のファイルデータの読み出し動作を高速化できる。
【0061】
なお、例えば、FBの数が所定の閾値より多い場合には、データ管理部110は、GC処理を実行せずに、ライトコマンドWCMDに基づくファイルデータの書き込み又は更新後のファイルデータの書き込みのあとに、ABO処理を実行してもよい。
【0062】
<1-7.メモリシステム1の動作方法の第2の例(第2例)>
図8~
図10を参照し、メモリシステム1の動作方法の第2例を説明する。
図8は、ライトコマンドWCMDのフォーマット500の一例を示す図である。
図9Aは、メモリシステム1の動作シーケンスの一例を示す図である。
図9Bは
図8に示されたライトコマンドWCMDの設定の一例を示す図である。
図10はメモリシステム1の動作方法の第2例を示すフローチャートである。メモリシステム1の第2例の動作方法の説明において、
図1~
図7と同一、又は類似する構成の説明は省略されることがある。
【0063】
図8及び
図9Bを参照し、ライトコマンドWCMDのフォーマット500を説明する。例えば、フォーマット500は、SCSIに準拠するフォーマットであってよい。ホスト30からメモリシステム1にファイルデータを書き込む要求を送信する場合に、フォーマット500は、例えば、当該ファイルデータに対応するLBAのスタートアドレス、及び、当該ファイルデータのサイズを指定する。
【0064】
フォーマット500は、動作コード(OPERATION CODE、OC)502、複数の個別設定コード504、LBA506、連続フラグ(Continuous Flag、CF)508、リサーブ領域(Rsvd)509、グループナンバー(GROUP NUMBER)510、転送長さ(TRANSFER LENGTH、TL)512、及び制御バイト514を含む。なお、フォーマット500で設定されるコード、データ、値などは、設定情報といわれる。
【0065】
OC502は、送信される要求(例えば、コマンド、記述子ブロック)が書き込み要求であることを示し、第1の動作コード(1st OPERATION CODE、1stOC)を含む。OC502のブロックサイズは、例えば、1バイト(Byte)であり、OC502は、所定の値2Ahを含む。複数の個別設定コード504は、WRPROTECT(0)、DPO、FUA、及びFUN_NV(0)などの個別設定可能なコード、並びに、拡張ブロックであるRsvdを含む。また、Obsoleteは過去に使用された時期が有ったものの、その後に廃止されたコードである。
【0066】
LBA506は、LBAのスタートアドレスである。LBA506のサイズは、例えば、4Byteである。LBA506のサイズは、4Byteに限定されるものではなく、メモリシステム1の用途、仕様などに基づき適宜選択可能である。例えば、フォーマット500が、スタートアドレスが0x0100(0x00000100)番地に1MByteのファイルデータを書き込む要求の場合には、LBA506は0x0100と設定される。
【0067】
CF508はCFデータを含み、CFデータのサイズは、例えば、2ビット(bit)であり、CF508は、例えば、
図9Bのように設定される。CFデータとして0b00(CF=00)が設定された場合には、フォーマット500は、通常データの書き込み動作を指示する書き込み要求を表す。通常データの書き込み動作は、例えば、連続する物理アドレスに対応するページに複数のデータを書き込まない動作である。CFデータに0b10(CF=10)が設定された場合には、フォーマット500は、連続データの書き込み動作及びABO処理を指示する書き込み要求を表す。連続データの書き込み動作及びABO処理は、連続する物理アドレスに対応するページにデータを書き込む動作である。CFに0b11(CF=11)が設定された場合には、フォーマット500は、CF=10の連続データの書き込み動作の終了を指示する書き込み要求を表す。また、CFに0b11(CF=11)が設定されたフォーマット500と共に、メモリシステム1に送信されるライトデータは、連続データの最後のデータである。なお、メモリシステム1は、CF=11が設定されたライトコマンドWCMDのあとの、ライトコマンドWCDMを、CF=10~CF=11が設定されたライトコマンドWCMDとは異なる書き込み要求として処理する。
【0068】
図8を参照し、フォーマット500の説明を続ける。転送長さ(TRANSFER LENGTH、TL)512は、ファイルデータのサイズを示す。TL512のサイズは、例えば、2Byteである。TL512のサイズは、2Byteに限定されるものではなく、メモリシステム1の用途、仕様などに基づき適宜選択可能である。
【0069】
Rsvd509は拡張ブロックであり、グループナンバー510、及び制御バイト514は、個別に設定可能なコードであるが、ここでの詳細な説明は省略する。
【0070】
図9Aを参照し、メモリシステム1の動作シーケンスの一例を説明する。
図9Aに示された動作シーケンスの一例は、同一のアプリケーション32により作成されるデータに含まれる複数のAFD(例えば、FileA~FileC)を書き込むための書き込み要求を、連続で複数回、ホスト30からメモリシステム1に送信することを含む。書き込み要求のそれぞれは、
図8に示されたフォーマット500を含むライトコマンドWCMDを含む。フォーマット500は、書き込み要求に対応する1stOC、及び、連続データ書き込み並びにABO処理を設定可能なCFデータを含む。
【0071】
初めに、ホスト(Host)30は、書き込み動作を開始する(ステップS1)。ホスト30は、OC、CF、LBA及びTLを、第1のオペレーションコマンド(1stOC)、「0b00」、所定のアドレス、及び所定のサイズに設定したフォーマット500を含む第1のライトコマンドWCMDを、メモリシステム1に送信する(ステップS10)。
【0072】
次に、ホスト(Host)30は、ステップS10において設定されたOCを変更せずに、ステップS10において設定されたCF、LBA及びTLを、「0b10」、所定のアドレス、及び所定のサイズに変更したフォーマット500を含む第2のライトコマンドWCMDを、メモリシステム1に送信する(ステップS11)。
【0073】
次に、ホスト(Host)30は、ステップS11以降ステップS12までの複数回のステップにおいて、ステップS11と同様にCFが0b10に設定されたフォーマット500を含むライトコマンドWCMDを、メモリシステム1に送信する。
【0074】
ステップS11~ステップS12までの複数のステップにおいて、フォーマット500のCFが0b10に設定されたため、メモリシステム1内のメモリコントローラ10は、ステップS11~ステップS12までにホスト30から受信したライトコマンドWCMDに基づき、不揮発性メモリ20に、ステップS11~ステップS12にホスト30から受信したアプリケーションファイルデータを連続する物理アドレスに対応するページに格納するように指示する。ステップS11~ステップS12におけるホスト30及びメモリシステム1の動作は、期間550の動作に対応する。
【0075】
次に、ホスト30は、ステップS12に続く、ステップS13~ステップS14までの複数回のステップにおいて、OC、CF、LBA及びTLを、1stOC、「0b00」、所定のアドレス、及び所定のサイズに設定されたフォーマット500を含むライトコマンドWCMDを、メモリシステム1に送信する。
【0076】
ステップS13~ステップS14までの複数のステップにおいて、フォーマット500のCFが0b00に設定されたため、メモリシステム1内のメモリコントローラ10は、ステップS13~ステップS14までにホスト30から受信したライトコマンドWCMDに基づき、不揮発性メモリ20に、ステップS13~ステップS14までにホスト30から受信したアプリケーションファイルデータを、所定の物理アドレスに対応するページに書き込むように指示する。
【0077】
次に、ホスト30は、ステップS15以降の複数回のステップにおいて、ステップS12と同様に、OC、CF、LBA及びTLを、1stOC、「0b10」、所定のアドレス、及び所定のサイズに設定されたフォーマット500を含むライトコマンドWCMDを、メモリシステム1に送信する。また、ホスト30は、ステップS16において、OC、CF、LBA及びTLを、1stOC、「0b11」、所定のアドレス、及び所定のサイズに設定されたフォーマット500を含む第3のライトコマンドWCMDを、メモリシステム1に送信する。
【0078】
ステップS16において、フォーマット500のCFが0b11に設定されたため、メモリシステム1内のメモリコントローラ10は、ステップS15~ステップS16までにホスト30から受信したライトコマンドWCMDに基づき、不揮発性メモリ20に、ステップS15~ステップS16にホスト30から受信したアプリケーションファイルデータを連続する物理アドレスに対応するページに格納するように指示する。ステップS15~ステップS16におけるホスト30及びメモリシステム1の動作は、期間552の動作に対応する。また、メモリシステム1内のメモリコントローラ10は、期間550の動作、及び、期間552の動作において受信したアプリケーションファイルデータを連続する一連の書き込み動作に対応するデータとして、連続する物理アドレスに対応するページに格納するように、不揮発性メモリ20に指示する。
【0079】
図10を参照し、メモリシステム1の動作方法の第2例を説明する。
図10に示されたメモリシステム1の動作方法の第2例は、
図9Aに示された動作シーケンスの一例において、2つのアプリケーションファイルデータを、連続する物理アドレスに対応するページに格納する例である。メモリシステム1の動作方法の第2例の説明において、
図9Aに示された動作シーケンスの一例と同様の説明は、省略される。
【0080】
ステップS501はステップS1に対応する。次に、メモリコントローラ10は、ホスト30からフォーマット500を含む第1のライトコマンドWCMD、及び、アプリケーション32に含まれるAFD321のFileAを受信し、W/R管理部111及びデータ管理部110を用いて、第1のライトコマンドWCMDに基づき、FileAを不揮発性メモリ20に格納する(ステップS502)。第1のライトコマンドWCMDに含まれるフォーマット500は、OC、CF、LBA及びTLが、1stOC、「0b00」、FileAのLBAである0000h、及び、FileAの転送長である512KByteに設定されている。なお、例えば、LBAは1アドレス当たり4KByteである。
【0081】
次に、メモリコントローラ10は、ホスト30からフォーマット500を含む第2のライトコマンドWCMD、及び、AFD321のFileBを受信し、W/R管理部111及びデータ管理部110を用いて、第2のライトコマンドWCMDに基づき、FileBを不揮発性メモリ20に格納する(ステップS503)。第2のライトコマンドWCMDに含まれるフォーマット500は、OC、CF、LBA及びTLが、1stOC、「0b10」、FileBのLBAである0080h、及び、FileBの転送長である512KByteに設定されている。
【0082】
次に、メモリコントローラ10は、ホスト30からフォーマット500を含む第3のライトコマンドWCMD、及び、アプリケーションファイルデータ321のFileCを受信し、W/R管理部111及びデータ管理部110を用いて、第3のライトコマンドWCMDに基づき、FileCを不揮発性メモリ20に格納する(ステップS504)。FileCは、FileA~FileCの一連のデータにおいて、FileBに連続する最後のファイルデータである。第3のライトコマンドWCMDに含まれるフォーマット500は、OC、CF、LBA及びTLが、1stOC、「0b11」、FileCのLBAである0100h、及び、FileCの転送長である512KByteに設定されている。
【0083】
次に、データ管理部110は、第3のライトコマンドWCMDに含まれるCFデータ(11)に基づき、ABO処理を実行する(ステップS505)。データ管理部110は、メモリI/Fを介して、FileA、FileB及びFileCを、論理アドレス0000h~017Fhの順に、不揮発性メモリ20の連続する物理アドレスに対応するページに格納することができる。また、データ管理部110は、論理アドレス0000h~017Fhの順に、不揮発性メモリ20の連続する物理アドレスに対応するページに格納されたアプリケーションファイルデータを管理することができる。
【0084】
なお、この時、データ管理部110は、論理アドレス00h~04hと、不揮発性メモリ20の連続する物理アドレスに対応するページとを対応付けて、論理アドレス00h~04hと、不揮発性メモリ20の連続する物理アドレスに対応するページとを、テーブル部400に含まれる複数のL2Pテーブルのうち、少なくとも1つのL2Pテーブルに格納する。
【0085】
データ管理部110が、ABO処理を実行し、ステップS505が完了すると、書き込み動作は終了する(ステップS506)。
【0086】
メモリシステム1は、同一のアプリケーション32を使用して生成された、連続する論理アドレスに対応する複数のファイルを、対応する論理アドレスの順に、不揮発性メモリ20の連続する物理アドレスに対応するページに、格納することができる。
【0087】
<第2実施形態>
第2実施形態に係るメモリシステム1について説明する。第2実施形態に係るメモリシステム1の動作方法は、第1実施形態に係るメモリシステム1の動作方法と相違する。第2実施形態に係るメモリシステム1の動作方法以外の構成要素は、第1実施形態の構成と同様である。以下、
図11~
図14を参照し、第1実施形態と異なる点を中心に説明する。
【0088】
<2-1.フォーマット600>
図11及び
図12を参照し、ライトコマンドWCMDのフォーマット600を説明する。
図11は、第2実施形態に係るメモリシステム1のライトコマンドWCMDのフォーマット600の一例を示す図である。
図12は、フォーマット600に含まれるアプリケーションコード及びレベルオーダー(Level Order)の設定の一例を示す図である。フォーマット600は、オペレーションコード(OC)、オーダーフラグ(OF)アプリケーションコード及びデータオーダーにおいて、第1実施形態に係るフォーマット500と相違する。なお、フォーマット500と同様に、フォーマット600で設定されるコード、データ、レベルオーダー、値などは、設定情報といわれる。
【0089】
フォーマット600は、OC602、OF608、アプリケーションコード(Application Code)616、第1のレベルオーダー(1st Level Data Order)618、第2のレベルオーダー(2nd Level Data Order)620、及び第3のレベルオーダー(3rd Level Data Order)622、並びに、複数の個別設定コード604、LBA606、グループナンバー(GROUP NUMBER)610、転送長さ(TRANSFER LENGTH、TL)612、及び制御バイト614を含む。複数の個別設定コード604、LBA606、グループナンバー(GROUP NUMBER)610、転送長さ(TRANSFER LENGTH、TL)612、及び制御バイト614は、複数の個別設定コード504、LBA506、グループナンバー(GROUP NUMBER)510、転送長さ(TRANSFER LENGTH、TL)512、及び制御バイト514と同様であり、説明を省略する。
【0090】
OC602は、転送されるブロック(例えば、コマンド、記述子ブロック)が書き込み要求であることを示し、第2の動作コード(2nd OPERATION CODE、2ndOC)を含む。OC602のブロックサイズは、例えば、1バイト(Byte)である。
【0091】
OF608はOFデータを含み、OFデータのサイズは、例えば、3ビット(bit)である。OFデータが設定されることによって、フォーマット600に対応する書き込み対象となるデータは、後述されるアプリケーションIDを含み、先に書き込まれたデータと連続することを示す。また、OFデータが設定されることによって、フォーマット600は、書き込み動作及びABO処理を指示する書き込み要求を表す。
【0092】
アプリケーションコード616、第1のレベルオーダー618、第2のレベルオーダー620、及び第3のレベルオーダー622のそれぞれのサイズは、例えば、512KByteである。アプリケーションコード616、第1のレベルオーダー618、第2のレベルオーダー620、及び第3のレベルオーダー622のそれぞれのサイズは、512KByteに限定されるものではなく、メモリシステム1の用途、仕様などに基づき適宜選択可能である。
【0093】
アプリケーションコード616、第1のレベルオーダー618、第2のレベルオーダー620、及び第3のレベルオーダー622は、
図12のように設定される。
【0094】
アプリケーションコード616は、アプリケーションIDを含む。アプリケーションIDは、例えば、
図12に示される#01などのアプリケーション固有のインデックスが付与される。
【0095】
第1のレベルオーダー618、第2のレベルオーダー620、及び第3のレベルオーダー622は、同一のアプリケーションに含まれるデータの階層構造を示す。例えば、データの階層構造を複数棟のマンションに例えて説明すると、1棟のマンションが3階建てであり、各階が10室を含む場合には、例えば、上一桁は棟の番号を示し、次の一桁は階を示し、下二桁は部屋番号を示すとすると、マンションの各部屋は4桁の数値で設定することができる。この場合、例えば、1棟の1階の5号室を1105のように設定し、1棟の2階の10号室を1210のように設定することができる。すなわち、例えば、第1のレベルオーダー618、第2のレベルオーダー620、及び第3のレベルオーダー622の順に、階層が深くなるように設定すると、第1のレベルオーダー618をマンションの棟の番号に割り当て、第2のレベルオーダー620をマンションの階に割り当て、第3のレベルオーダー622をマンションの部屋番号に割り当てることができる。
【0096】
図12に示される第1のレベルオーダー618、第2のレベルオーダー620、及び第3のレベルオーダー622のそれぞれは、1~3、1~5、1~10の正の整数が割り当てられ、第1のレベルオーダー618、第2のレベルオーダー620、及び第3のレベルオーダー622の順に、階層が深くなるように設定される。なお、メモリシステム1は、一例として、3階層のレベルオーダーを示すが、レベルオーダーの階層の数は3階層に限定されない。レベルオーダーの階層の数は、メモリシステム1の用途、仕様などに基づき適宜選択可能である。なお、メモリシステム1では、一例として、第1のレベルオーダー618の設定値をx、第2のレベルオーダー620の設定値をy、第3のレベルオーダー622の設定値をzのように定義した場合には、第1のレベルオーダー618、第2のレベルオーダー620、及び第3のレベルオーダー622を(x、y、z)のように1つのユニットで表す。
【0097】
また、第1のレベルオーダー618、第2のレベルオーダー620、及び第3のレベルオーダー622は、同一のアプリケーションに含まれるデータの階層構造を示すと共に、階層は、同一のアプリケーションに含まれるデータの読み出す順番及び書き込む順番を示す情報である。すなわち、メモリコントローラ10は、(x、y、z)のうち、設定値が小さいユニットに対応するデータから順に書き込み及び読み出しが実行されるように、不揮発性メモリ20に指示する。
【0098】
<2-2.メモリシステム1の動作方法の一例>
図13及び
図14を参照し、第2実施形態に係るメモリシステム1の動作方法を説明する。
図13及び
図14は第2実施形態に係るメモリシステム1の動作方法を示すフローチャートである。
【0099】
第2実施形態に係るメモリシステム1の動作方法は、同一のアプリケーション32により作成されるデータに含まれ、読み出す順番又は書き込む順番を示す階層構造を示す情報を含む複数のアプリケーションファイルデータ(例えば、FileA~FileC)を書き込むための書き込み要求を、ホスト30からメモリシステム1に送信することを含む。書き込み要求のそれぞれは、
図11に示されたフォーマット600を含むライトコマンドWCMDを含む。フォーマット600は、書き込み要求に対応する2ndOC、アプリケーションID、先に書き込まれたデータに連続するデータであることを示すと共に書き込み並びにABO処理を設定可能なOFデータを含む。
【0100】
なお、第2実施形態に係るメモリシステム1の動作方法では、一例として、アプリケーション32により作成されるデータは、各々が512KByteのTLを有するFileA~FileEの5つのAFDを含むものとする。FileA~FileEは、第1のファイルデータ~第5のファイルデータといわれる。
【0101】
初めに、ホスト30は、書き込み動作を開始する(ステップS601)。ホスト30は、OC602、アプリケーションコード616、第1のレベルオーダー618、第2のレベルオーダー620、及び第3のレベルオーダー622、LBA並びにTLを、2ndOC、#01、(1,0、0,)、所定のアドレス、及び512KByteに設定し、OFを設定されたフォーマット600を含む第1のライトコマンドWCMD、及び、FileAを、メモリシステム1に送信する(ステップS602)。
【0102】
次に、メモリコントローラ10は、ホスト30からフォーマット600を含む第1のライトコマンドWCMD、及び、アプリケーションファイルデータ321に含まれるFileAを受信し、W/R管理部111及びデータ管理部110を用いて、第1のライトコマンドWCMDに基づき、FileAを不揮発性メモリ20に格納する(ステップS602)。第1のライトコマンドWCMDに含まれるフォーマット600のOC602、アプリケーションコード616、第1のレベルオーダー618、第2のレベルオーダー620、及び第3のレベルオーダー622、LBA並びにTLが、2ndOC、#01、(1,0、0)、FileAに対応するLBA、並びに512KByteに設定され、OFを設定されている。
【0103】
ステップS602の次に、ホスト30はステップS603を実行する。ホスト30は、ステップS602のFileA、第1のライトコマンドWCMD、第1のレベルオーダー618、第2のレベルオーダー620、及び第3のレベルオーダー622の(1、0、0)、並びに、FileAに対応するLBAを、FileB、第2のライトコマンドWCMD、(2、0、0)、並びに、FileBに対応するLBAに置き換えたステップS603を実行する。
【0104】
ステップS603の次に、ホスト30はステップS604を実行する。ホスト30は、ステップS603のFileB、第2のライトコマンドWCMD、第1のレベルオーダー618、第2のレベルオーダー620、及び第3のレベルオーダー622の(2、0、0)、並びに、FileBに対応するLBAを、FileC、第3のライトコマンドWCMD、(3、0、0)、並びに、FileCに対応するLBAに置き換えたステップS604を実行する。
【0105】
第1のライトコマンドWCMD~第3のライトコマンドWCMDは、それぞれ、OF及び階層構造(第1~第3のレベルオーダー)が設定されている。データ管理部110は、第1のライトコマンドWCMD~第3のライトコマンドWCMDに設定されたOF及び階層構造に基づき、ABO処理を実行する(ステップS605)。データ管理部110は、メモリI/Fを介して、FileA、FileB、及びFileCを、FileA、FileB、及びFileCの順に、かつ、不揮発性メモリ20の連続する物理アドレスに対応するページに格納することができる。また、データ管理部110は、FileA、FileB、及びFileCの階層構造の順に、不揮発性メモリ20の連続する物理アドレスに対応するページに格納されたアプリケーションファイルデータを管理することができる。
【0106】
なお、この時、データ管理部110は、FileA、FileB、及びFileCのLBAと、不揮発性メモリ20の連続する物理アドレスに対応するページとを対応付けて、テーブル部400に含まれる複数のL2Pテーブルのうち、少なくとも1つのL2Pテーブルに格納する。
【0107】
次に、メモリコントローラ10が、ホスト30から、消去コマンドERCMD及び消去データ(FileB)などを含む消去要求を受信すると、メモリコントローラ10は、消去コマンドERCMD及び消去データなどに基づき、「1-3.メモリコントローラ10の構成」で説明した消去動作を実行する(ステップS606)。
【0108】
次に、メモリコントローラ10が消去動作を実行したことに伴い、データ管理部110は、ABO処理を実行する(ステップS607)。すなわち、データ管理部110は、メモリI/Fを介して、FileA、及びFileCを、FileA、及びFileCのLBAの順に、不揮発性メモリ20の連続する物理アドレスに対応するページに格納する。また、データ管理部110は、FileA、及びFileCのLBAと、不揮発性メモリ20の連続する物理アドレスに対応するページとを対応付けて、テーブル部400に含まれる複数のL2Pテーブルのうち、少なくとも1つのL2Pテーブルに格納する。
【0109】
ステップS607の次に、ホスト30はステップS608を実行する。ホスト30は、ステップS604のFileC、第3のライトコマンドWCMD、第1のレベルオーダー618、第2のレベルオーダー620、及び第3のレベルオーダー622の(3、0、0)、並びに、FileCに対応するLBAを、FileD、第4のライトコマンドWCMD、(2、0、0)、並びに、FileDに対応するLBAに置き換えたステップS608を実行する。
【0110】
ステップS608の次に、ホスト30はステップS609を実行する。ホスト30は、ステップS608のFileD、第4のライトコマンドWCMD、第1のレベルオーダー618、第2のレベルオーダー620、及び第3のレベルオーダー622の(2、0、0)、並びに、FileDに対応するLBAを、FileE、第5のライトコマンドWCMD、(2、1、0)、並びに、FileEに対応するLBAに置き換えたステップS609を実行する。
【0111】
第4のライトコマンドWCMD及び第5のライトコマンドWCMDは、それぞれ、OF及び階層構造が設定されているため、ステップ605と同様に、データ管理部110は、第4のライトコマンドWCMD及び第5のライトコマンドWCMDに設定されたOF及び階層構造に基づき、ABO処理を実行する(ステップS610)。その結果、データ管理部110は、FileA、FileC、FileD、及びFileEのそれぞれの階層構造である(1、0、0)、(3、0、0)、(2、0、0)及び(2、1、0)に基づき、メモリI/Fを介して、FileA、FileD、FileE、及びFileCの順に、FileA、FileD、FileE、及びFileCを不揮発性メモリ20の連続する物理アドレスに対応するページに格納することができる。また、データ管理部110は、FileA、FileD、FileE、及びFileCの順に、不揮発性メモリ20の連続する物理アドレスに対応するページに格納されたアプリケーションファイルデータを管理することができる。
【0112】
なお、この時、データ管理部110は、FileA、FileD、FileE、及びFileCの階層構造と、不揮発性メモリ20の連続する物理アドレスに対応するページとを対応付けて、テーブル部400に含まれる複数のL2Pテーブルのうち、少なくとも1つのL2Pテーブルに格納する。
【0113】
データ管理部110が、ABO処理を実行し、ステップS610が完了すると、書き込み動作は終了する(ステップS611)。
【0114】
また、例えば、ステップS610のあとに、メモリシステム1がホスト30からリードコマンドRCMDを含む読み出し要求を受信し、リードコマンドRCMDに基づき、不揮発性メモリ20からデータを読み出す場合、階層構造と各データの物理アドレスに対応するページが格納されたL2Pテーブルに基づき、FileA、FileD、FileE、及びFileCをこの順番で読み出すことができる。
【0115】
第2実施形態に係るメモリシステム1は、第1実施形態に係るメモリシステム1と同様にABO処理を実行し、複数のファイルデータを不揮発性メモリ20の連続する物理アドレスに対応するページに格納することができる。よって、第2実施形態に係るメモリシステム1は、第1実施形態に係るメモリシステム1と同様に、アプリケーション32を起動する場合のファイルデータの読み出し時間を短くすることができ、アプリケーション32を起動する場合のファイルデータの読み出し動作を高速化できる。
【0116】
<第3実施形態>
第3実施形態に係るメモリシステム1について説明する。第3実施形態に係るメモリシステム1の動作方法は、第1実施形態及び第2実施形態に係るメモリシステム1の動作方法と相違する。第3実施形態に係るメモリシステム1の説明では、第1実施形態と異なる点を中心に説明する。
【0117】
<3-1.メモリシステム1の全体構成>
図15は、第3実施形態に係るメモリシステム1及びホスト30の機能ブロック図である。第3実施形態に係るメモリシステム1の動作方法は、ホスト30からのライトコマンドWCMDに基づき、メモリコントローラ10が、データ管理部110及びW/R管理部111を用いて、ABO処理を実行するのではなく、メモリコントローラ10のデータ管理部110がファイルシステム121を解析すること、時刻情報を取得することを含む。ファイルシステム121は、ホスト30がファイルやディレクトリについての情報を管理するためのデータであり、不揮発性メモリ20に格納されたファイルのデータ及び当該データが格納されたアドレスを管理するデータフォーマットであり、当該データが不揮発性メモリ20に格納された時刻等を含むメタデータ(例えば、タイムスタンプ122(Time Stamp)など)を含む。
【0118】
データ管理部110は、ファイルシステムの種類に応じて、ファイルシステム121に含まれるタイムスタンプ122を特定し、特定されたタイムスタンプ122を時刻情報として読み出す。タイムスタンプ122が存在する領域はファイルシステムによって異なる。
【0119】
データ管理部110は、例えば、プログラム115を含む。プログラム115は、ファイルシステム121を定期的に読み出し、ファイルシステム121のデータ構造を解析し、当該データがタイムスタンプ122を含むか否かを判断するプログラムである。具体的には、プログラム115は、代表的な複数のファイルシステムを解析することができる。
【0120】
データ管理部110は、定期的にプログラム115を実行する。データ管理部110は、ホスト30からライトコマンドWCMDを受信した回数をカウントした累積ライト量を格納すると共に、累積ライト量を管理してもよい。また、例えば、データ管理部110は、ホスト30からリードコマンドRCMDを受信した回数をカウントし、累積リード量を格納すると共に、累積ライト量を管理してもよい。また、データ管理部110は、ライトコマンドWCMD又はリードコマンドRCMDの受信毎に実行されてもよい。
【0121】
データ管理部110は、例えば、累積リード量が100GByte毎に、又は、累積ライト量が100GByte毎に、プログラム115を実行し、ファイルシステム121を読み出し、ファイルシステム121のデータ構造を解析し、当該データがタイムスタンプ122を含むか否かを判断する。
【0122】
<3-2.メモリシステム1の動作方法>
図16~
図17Eを参照し、第3実施形態に係るメモリシステム1の動作方法を具体的に説明する。
図16は第3実施形態に係るメモリシステム1の動作方法を示すフローチャートである。
図17Aは、第3実施形態に係るタイムスタンプテーブル630の構成を示す図である。
図17B、
図17D及び
図17Fは、第3実施形態に係る実データ部300Aの構成を示す図である。
図17C、
図17E及び
図17Gは、第3実施形態に係るL2Pテーブル400Aの構成を示す図である。
【0123】
メモリコントローラ10が、例えば、ホスト30からライトコマンドWCMD又はリードコマンドRCMDを受信すると、メモリコントローラ10はライトコマンドWCMD及びリードコマンドRCMDを受信した回数のカウントを開始する(ステップ701)。
【0124】
データ管理部110は、例えば、累積リード量又は累積ライト量が一定量毎に、ファイルシステム121を読み出す(ステップS702)。データ管理部110は、ファイルシステム121を読み出したあとに、ファイルシステム121のデータ構造を解析する(ステップS703)。また、当該データ構造内のデータがタイムスタンプ122を含むか否かを判断する。当該データ構造内のデータがタイムスタンプ122を含むと判断した場合には、データ管理部110は、タイムスタンプ122に対応する時刻情報をタイムスタンプテーブル630に格納する。
【0125】
例えば、タイムスタンプテーブル630では、
図17Aに示されるLBA、AFD、アプリケーションID、及びタイムスタンプ122が互いに対応付けられている。LBA0000h~007Fh、FileA、アプリケーションIDの#01(アプリケーション32)、及びタイムスタンプ122の時刻t0が互いに対応付けられている。FileAと同様に、FileB及びFileCが、
図17Aに示されるように対応付けられている。ここで、時刻t0から時刻t1で、FileAがFileAUに更新される。同一のアプリケーション32(アプリケーションIDが#01)を使用して生成されたFileB、FileA、FileCは、この順で、メモリブロックに格納される。
【0126】
また、
図17Bは、例えば、下記の処理が実行された後の実データ部300Aにおけるデータ配置を模式的に示した図である実データ部300Aは、例えば、メモリブロックMB1~MB3を含む。
ホスト30は、FileB、FileA、及びFileCを作成し、メモリシステム1に送信する。メモリシステム1は、FileB、FileA、及びFileCを、メモリブロックMB1の物理アドレスに対応するページ000~ページ095に格納する。
また、
図17Cのテーブル部400Aに示されるように、テーブル部400Aは、例えば、第1のL2Pテーブル400a、第2のL2Pテーブル400b及び第3のL2Pテーブル400cを含む。
図17Cのテーブル部400Aは、
図17Bに示された実データ部300Aに対応するテーブル部である。第1のL2Pテーブル400aでは、LBA0000h~017Fhが、FileB、FileA及びFileC(物理アドレスに対応するページ000~ページ095)に対応付けられている。メモリブロックMB1~MB3、第1のL2Pテーブル400a、第2のL2Pテーブル400b及び第3のL2Pテーブル400cの構成は、第1実施形態と同様の構成であり、ここでの詳細な説明は省略される。
【0127】
例えば、メモリコントローラ10が、ホスト30から書き込みコマンドWCMD及びライトデータ(FileB、FileA、及びFileC)を含む書き込み要求を受信し、書き込みコマンドWCMD及びライトデータ(FileB、FileA、及びFileC)に基づき、「1-3.メモリコントローラ10の構成」で説明された書き込み動作を実行することによって、
図17Aに示されたタイムスタンプテーブル630、
図17B及び
図17Cで示された実データ部300A及びテーブル部400Aは構成される。また、FileA~FileCが更新されると、例えば、メモリコントローラ10が、「1-6.メモリシステム1の動作方法の第1の例(第1例)」で説明された書き込み動作を実行することによって、
図17Aに示されたタイムスタンプテーブル630U、
図17D及び
図17Eで示された実データ部300A又はテーブル部400Aは構成される。
【0128】
タイムスタンプ122が更新されると、例えば、タイムスタンプテーブル630はタイムスタンプテーブル630Uに更新され、
図17Bに示される実データ部300Aは
図17Dに示される実データ部300に更新され、
図17Cに示されるテーブル部400Aは
図17Eに示されるテーブル部400Aに更新される。タイムスタンプテーブル630U、及び
図17Dに示される実データ部300Aに基づき、FileAが格納されているページが、時刻t1で、ページ032~ページ063から、ページ128~ページ159に更新されている。
図17Dは、例えば、FileB、FileA、及びFileCをメモリブロックMB1の物理アドレスに対応するページ000~ページ095に格納し、下記の処理が実行された後の実データ部300Aにおけるデータ配置を模式的に示した図である。
ホスト30は、FileA~FileC、及びFileAUとは他のデータを作成し、メモリシステム1に送信する。メモリシステム1は、当該他のデータを、メモリブロックMB1のページ096~ページ127に格納する。当該他のデータは、ページ096~ページ127に格納された有効データであり、
図17Eのテーブル部400Aで、FileA~FileC、FileAU以外の有効データに対応するLBAに対応付けられた物理アドレスのページ096~ページ127のファイルデータである。
その後、ホスト30は、FileAをFileAUに更新し、メモリシステム1に送信する。メモリシステム1は、FileAUを、メモリブロックMB2のページ128~ページ159に格納する。
図17Eのテーブル部400Aは、
図17Dに示された実データ部300Aに対応するテーブル部である。第1のL2Pテーブル400aでは、LBA0000h~007FhがFileB(物理アドレスのページ000~ページ031)に対応付けられており、LBA0100h~017FhがFileC(物理アドレスのページ064~ページ095)に対応付けられており、FileA~FileC、FileBU及びFileCU以外の有効データに対応するLBAが物理アドレスのページ096~ページ127に対応付けられている。また、第2のL2Pテーブル400bでは、LBA0080h~00FFhがFileAU(物理アドレスのページ128~ページ159)に対応付けられている。
なお、
図17B~
図17Eに示された消去後のページ(EP)は、実データ部300A及びテーブル部400Aの物理アドレスと論理アドレスとの対応付けの無いページである。また、
図17D及び
図17Eに示されるように、第1のL2Pテーブル400aのLBA0080h~00FFhに対応していたFileB(物理アドレスのページ032~ページ063)の対応付けが無くなっている(
図17Dでは無効データと記載)。
【0129】
図16に戻って説明を続ける。データ管理部110はタイムスタンプテーブル630Uを読み出し、更新されたタイムスタンプ122に対応する時刻情報を取得する(ステップS704)。
【0130】
データ管理部110がタイムスタンプ122を時刻情報として取得すると、データ管理部110は、
図17Eに示された更新後のテーブル部400Aを読み出し、ファイルデータの順番を確認する(ステップ705)。具体的には、データ管理部110は、
図17Eに示された第1のL2Pテーブル400a及び第2のL2Pテーブル400bを読み出し、LBA0000h~007Fhと物理アドレスのページ000~ページ031とが対応付けられていること、LBA0100h~017Fhと物理アドレスのページ064~ページ095とが対応付けられていること、及びLBA0080h~00FFhと物理アドレスのページ128~ページ159とが対応付けられていることを確認する。また、データ管理部110は、
図17Dに示された更新後の実データ部300Aの物理アドレスのページ000~ページ031にはFileBが格納されていること、ページ064~ページ095にはFileCが格納されていること、及びページ128~ページ159にはFileAUがこの順番で格納されていることを確認する。
データ管理部110は、ファイルの更新に基づき、第1実施形態及び第2実施形態で説明したABO処理を実行する。
図17Fは、例えば、FileAUをメモリブロックMB2の物理アドレスに対応するページ128~ページ159に格納し、ABO処理が実行された後の実データ部300Aにおけるデータ配置を模式的に示した図である。
ホスト30は、FileA~FileC、及びFileAU、ページ128~ページ159に格納されたデータとは別の他のデータを作成し、メモリシステム1に送信する。メモリシステム1は、当該他のデータを、メモリブロックMB2のページ160~ページ255に格納する。当該他のデータは、ページ160~ページ255に格納された有効データであり、
図17Gのテーブル部400Aで、FileA~FileC、FileAU以外の有効データに対応するLBAに対応付けられた物理アドレスのページ160~ページ255のファイルデータである。
その結果、データ管理部110は、
図17Fに示される実データ部300Aのように、連続するLBA000h~017Fhに対応するFileB、FileAU及びFileCを、対応するLBAの順に、メモリブロックMB3の連続する物理アドレスに対応するページ256~351に格納することができる。また、データ管理部110は、
図17Gに示されるテーブル部400Aのように、物理アドレスのページ256~ページ352とLBA0000h~017Fhとを対応付けて、第3のL2Pテーブル400cに格納する。すなわち、ページ256~ページ352に格納されたFileB、FileAU及びFileCが有効データとなっている。また、
図17Gに示されるように、第2のL2Pテーブル400bのLBA0080h~00FFhに対応していたFileAU(物理アドレスのページ128~ページ159)、及び、メモリブロックMB2のFileAU(物理アドレスのページ128~ページ159)の対応付けが無くなっている(
図17Fでは無効データと記載)。なお、第3実施形態において、無効となったデータのLBA(斜線の箇所)の対応付けは存在しなくてもよく、第1のL2Pテーブル400a、第2のL2Pテーブル400b、及び第3のL2Pテーブル400cのLBAがEPとなっている対応付けは存在しなくてもよい。
【0131】
データ管理部110が、FileB、FileAU及びFileCがこの順番で格納されていることを確認すると、第3実施形態に係るメモリシステム1の動作方法は終了する(ステップS707)。
【0132】
第3実施形態に係るメモリシステム1は、第1実施形態及び第2実施形態と同様にABO処理を実行し、同一のアプリケーション32を使用して生成された、連続するLBAに対応する複数のファイルデータを、対応する論理アドレスの順に、不揮発性メモリ20の連続する物理アドレスに対応するページに格納することができる。よって、第3実施形態に係るメモリシステム1は、第1実施形態及び第2実施形態と同様に、アプリケーション32を起動する場合のファイルデータの読み出し時間を短くすることができ、アプリケーション32を起動する場合のファイルデータの読み出し動作を高速化できる。
【0133】
<第4実施形態>
第4実施形態に係るメモリシステム1について説明する。第4実施形態に係るメモリシステム1の動作方法は、第1実施形態に係るメモリシステム1の動作方法と相違する。第4実施形態に係るメモリシステム1の説明では、第1実施形態と異なる点を中心に説明する。
【0134】
<4-1.メモリシステム1の全体構成>
図18を参照し、第4実施形態に係るメモリシステム1及びホスト30の機能ブロック構成を説明する。
図18は第4実施形態に係るメモリシステム1及びホスト30の機能ブロック図である。
【0135】
第4実施形態に係るメモリシステム1の動作方法は、ホスト30からの第1のコマンドに基づき、メモリコントローラ10が、データ管理部110及びW/R管理部111を用いて、同一のアプリケーション33を使用して生成された少なくとも2つのAFD(例えば、FileB及びFileD)を連結する処理を実行すること、及び、ABO処理を実行することを含む。第1のコマンドは、
図20に示されたフォーマット700を含む。フォーマット700は、第1のコマンドに対応する第3のオペレーションコマンド(3rdOC)、第1のLBA(1stLBA)、第1のデータ長(1st Data Length、1stDL)、第2のLBA(2ndLBA)、及び第2のデータ長(2nd Data Length、2ndDL)を含む。
【0136】
W/R管理部111は、ホスト30から受信した第1のコマンドに応じて、同一のアプリケーション33を使用して生成された少なくとも2つのAFDを連結する処理を実行することを、不揮発性メモリ20へ指示する。
【0137】
データ管理部110は、ホスト30から受信した第1のコマンドに応じて、例えば、テーブル部400に含まれるL2PテーブルをRAM12に読み出して、RAM12上に展開し、L2Pテーブル内の管理情報を更新する。
【0138】
<4-2.アプリケーション33により作成されるデータの構成>
図19を参照し、アプリケーション33により作成されるデータの構成を説明する。
図19は第4実施形態に係るアプリケーション33により作成されるデータの構成を示す図である。アプリケーション33により作成されるデータは、AFD331を含む。アプリケーション33により作成されるデータは、ホスト30の論理アドレスで特定される。論理アドレス空間100Aでは、AFDが論理アドレスに対応付けられている。
【0139】
AFD331は、例えば、同一のアプリケーション33を使用して生成されたFileA~FileDを含む。FileBはLBA0000h~007Fhに対応付けられ、FileDはLBA1080h~117Fhに対応付けられ、FileAはLBA2180h~227Fhに対応付けられ、FileCはLBA2280h~237Fhに対応付けられている。すなわち、第4実施形態に係るメモリシステム1では、FileB、FileD、FileA、及びFileCは、連続する論理アドレスに対応付けられていない。
【0140】
<4-3.フォーマット700>
図20を参照し、第1のコマンドのフォーマット700を説明する。
図20は第4実施形態に係る第1のコマンドのフォーマット700の一例を示す図である。フォーマット700は、3rdOC、1stLBA、1stDL、2ndLBA、及び2ndDLにおいて、第1実施形態に係るフォーマット500と相違する。なお、フォーマット500と同様に、フォーマット700で設定されるコード、データ、値などは、設定情報といわれる。
【0141】
フォーマット700は、OC702、複数の個別設定コード704、1stLBA706、リザーブ領域(Reserved)709及び719、1stDL713、2ndLBA716、2ndDL723、及び制御バイト714及び724を含む。すなわち、フォーマット700は、連続する2つのLBA(1stLBA706及び2ndLBA716)を含み、1stLBA706及び2ndLBA716のそれぞれのデータ長に対応する1stDL713及び2ndDL723を含む。
【0142】
複数の個別設定コード704、リザーブ領域709及び719、制御バイト714及び724は、複数の個別設定コード504、リザーブ領域509、及び制御バイト514と同様であり、説明を省略する。また、1stLBA706及び2ndLBA716は、LBA506と同様であり、1stDL713及び2ndDL723はTL512と同様である。
【0143】
OC702は、転送されるブロック(例えば、コマンド、記述子ブロック)が、少なくとも2つのAFDを連結すると共にABO処理の実行要求であることを示し、第3の動作コード(3rd OPERATION CODE、3rdOC)を含む。
【0144】
<4-4.メモリシステム1の動作方法>
図21~
図24を参照し、第4実施形態に係るメモリシステム1の動作方法を説明する。
図21は第4実施形態に係るメモリシステム1の動作方法を示すフローチャートである。
図22は
図20に示された第1のコマンドの設定の一例を示す図である。
図23は第4実施形態に係る実データ部300B及びテーブル部400Bの構成を示す図であり、
図24は第4実施形態に係るテーブル部400Bの構成を示す図である。第4実施形態に係るメモリシステム1の動作方法では、一例として、アプリケーション33により作成されるデータは、各々が512KByteのDLを有するFileA~FileDの4つのAFDを含むものとする。FileA~FileDは、第1のファイルデータ~第4のファイルデータといわれる。
【0145】
初めに、ホスト30は、複数のAFDを連結する動作を開始する(ステップS701)。ホスト30は、OC702、1stLBA、1stDL、2ndLBA、及び2ndDLを、
図22に示される3rdOC、FileBのLBAのスタートアドレス、512KByte、FileDのLBAのスタートアドレス、及び512KByteに設定されたフォーマット700を含む第1のコマンドを、メモリシステム1に送信し、メモリコントローラ10は、ホスト30からフォーマット700を含む第1のコマンドを受信する(ステップS702)。なお、スタートアドレスは、例えば、スタートアドレスが設定されAFDの読み出す順番又は書き込む順番を示すアドレスである。FileBのLBAのスタートアドレスは、FileDのLBAのスタートアドレスより小さい。不揮発性メモリ20は、FileBをFileDより先に格納し、FileBをFileDより先に読み出す。
【0146】
ステップS702の次に、メモリシステム1はステップS703を実行する。メモリシステム1は、ステップS702の3rdOC、FileBのLBAのスタートアドレス、512KByte、FileDのLBAのスタートアドレス、及び512KByteに設定されたフォーマット700を、
図22に示される3rdOC、FileDのLBAのスタートアドレス、512KByte、FileAのLBAのスタートアドレス、及び512KByteに設定されたフォーマット700に置き換えた第1のコマンドを、メモリシステム1に送信し、メモリコントローラ10は、ホスト30からフォーマット700を含む第1のコマンドを受信する(ステップS703)。FileDのLBAのスタートアドレスは、FileAのLBAのスタートアドレスより小さい。不揮発性メモリ20は、FileDをFileAより先に格納し、FileDをFileAより先に読み出す。
【0147】
次に、メモリコントローラ10は、ステップS704を実行する。ステップS704におけるメモリシステム1の動作方法は、ステップS703におけるFileB及びFileDを、FileA及びFileCに置き換えた動作方法である。FileAのLBAのスタートアドレスは、FileCのLBAのスタートアドレスより小さい。不揮発性メモリ20は、FileAをFileCより先に格納し、FileAをFileCより先に読み出す。
【0148】
ステップS704が終了すると、メモリコントローラ10は、ステップS702~S704で受信した各第1のコマンドに基づき、W/R管理部111及びデータ管理部110を用いて、連続する論理アドレスに対応するFileB、FileD、FileA及びFileCを、この順に連結すると共に、連続する物理アドレスに対応するページに格納する処理(ABO処理)を実行するように不揮発性メモリ20に指示する(ステップS705)。不揮発性メモリ20は、FileB、FileD、FileA及びFileCをこの順番で、連続する物理アドレスに対応するページに格納する。
【0149】
例えば、不揮発性メモリ20は、
図23に示されるように、実データ部300に含まれるメモリブロックMB1(論理アドレスと物理アドレスとの対応付けの無いページ(EP))に、ファイルデータを格納する。具体的には、不揮発性メモリ20は、FileBをページ000~ページ031に格納し、FileDをページ032~ページ063に格納し、FileAをページ064~ページ095に格納し、FileCをページ096~ページ127に格納する。
【0150】
また、データ管理部110は、
図24に示されるように、テーブル部400に含まれる第1のL2Pテーブル400aの論理アドレスと物理アドレスとの対応付けの無いページ(EP)を、有効データが格納された状態にする。具体的には、データ管理部110は、ページ000~ページ032の物理アドレスと論理アドレス0000h~007Fhとを対応付け、ページ033~ページ063の物理アドレスと論理アドレス1080h~117Fhとを対応付け、ページ064~ページ095の物理アドレスと論理アドレス2080h~217Fhとを対応付け、ページ096~ページ0127の物理アドレスと論理アドレス2280h~237Fhとを対応付ける。ステップS705終了時点での、実データ部300B及びテーブル部400Bの状態が、
図23及び
図24に示された状態である。
【0151】
データ管理部110が、ABO処理を実行し、ステップS705が完了すると、書き込み動作は終了する(ステップS706)。
【0152】
例えば、ステップS706のあとに、メモリシステム1がホスト30からリードコマンドRCMDを含む読み出し要求を受信し、リードコマンドRCMDに基づき、不揮発性メモリ20からデータを読み出す場合、FileB、FileD、FileA及びFileCをこの順番で読み出すことができる。
【0153】
第4実施形態に係るメモリシステム1の動作方法は、予め、少なくとも2つのAFDを連結する第1のコマンドを用いて、少なくとも2つのAFDが離隔することなく、2つのAFDを連結した状態で、2つのAFDを連続する物理アドレスに対応するページに格納することができる。その結果、複数のAFDを個別に書き込み、ABO処理を用いて、連続する物理アドレスに対応するページにAFDを格納する場合より、メモリシステム1がホスト30から受信するコマンドの数を減らすことができる。よって、第4実施形態に係るメモリシステム1の動作方法は、GC処理の回数を低減可能であり、不揮発性メモリ20の寿命を延ばすことができる。また、第4実施形態に係るメモリシステム1の動作方法は、複数のAFDの論理アドレスが離れている場合であっても、連続する物理アドレスに対応するページに格納することができる。よって、第4実施形態に係るメモリシステム1は、第1実施形態~第3実施形態と同様に、アプリケーション33を起動する場合のファイルデータの読み出し時間を短くすることができ、アプリケーション33を起動する場合のファイルデータの読み出し動作を高速化できる。
【0154】
<第5実施形態>
第5実施形態に係るメモリシステム1について説明する。第5実施形態に係るメモリシステム1の動作方法は、第1実施形態に係るメモリシステム1のアプリケーション専用L2Pテーブル410に関連する動作方法である。第5実施形態に係るメモリシステム1の説明では、第1実施形態と異なる点を中心に説明する。
【0155】
<5-1.メモリシステム1の全体構成>
図25を参照し、第5実施形態に係るメモリシステム1及びホスト30の機能ブロック構成を説明する。
図25は第5実施形態に係るメモリシステム1及びホスト30の機能ブロック図である。
【0156】
第5実施形態に係るメモリシステム1の動作方法は、ホスト30からのライトコマンドWCMDに基づき、メモリコントローラ10が、データ管理部110及びW/R管理部111を用いて、同一のアプリケーション34を使用して生成された複数のAFD341(例えば、FileA~FileD)の書き込み動作を実行すること、書き込み動作を実行したのちABO処理を実行すること、ABO処理を実行したあとに、アプリケーション専用L2Pテーブルを生成することを含む。ライトコマンドWCMDは、例えば、第1実施形態に係る
図8に示されたフォーマット500を含む。アプリケーション専用L2Pテーブル410は、第1実施形態と同様に同一のアプリケーション34を使用して生成された複数のAFDの論理アドレスと、物理アドレスに対応するページとを対応付けた情報が格納されている。
【0157】
第5実施形態に係るメモリシステム1の動作方法は、一例として、フォーマット500を含むライトコマンドWCMDに基づく書き込み動作を実行することを含む。第5実施形態に係るメモリシステム1の動作方法が対応するフォーマットはフォーマット500に限定されない。例えば、フォーマットは、フォーマット600でよく、フォーマット700でもよい。フォーマットは、メモリシステム1の用途、仕様などに基づき適宜選択可能である。
【0158】
データ管理部110は、例えば、プログラム116を含む。プログラム116は、ABO処理の終了を受けて、アプリケーション専用L2Pテーブル410を生成するプログラムである。
【0159】
第5実施形態に係るメモリシステム1の動作方法では、ABO処理を実行したのち、データ管理部110は、ABO処理の終了を受けて、プログラム116を実行し、アプリケーション専用L2Pテーブル410を生成する。
【0160】
<5-2.アプリケーション34により作成されるデータの構成>
図26を参照し、アプリケーション34により作成されるデータの構成を説明する。
図19Aは第5実施形態に係るアプリケーション34により作成されるデータの構成を示す図である。アプリケーション34により作成されるデータは、AFD341を含む。アプリケーション34により作成されるデータは、ホスト30の論理アドレスで特定される。
【0161】
AFD341は、例えば、FileA~FileDを含む。FileA~FileDは、連続する論理アドレスに対応するLBA0000h~027Fhに対応付けられている。第5実施形態に係るメモリシステム1の動作方法では、一例として、アプリケーション34により作成されるデータは、各々が512KByteのTLを有するFileA~FileDの4つのAFDを含むものとする。FileA~FileDは、第1のファイルデータ~第4のファイルデータといわれる。
【0162】
<5-3.実データ部300C及びテーブル部400Cの構成>
図28A及び28Bを参照し、実データ部300C及びテーブル部400Cの構成を説明する。
図28Aは、メモリシステム1が書き込み要求を受信し、ライトコマンドWCMDに基づき、書き込み動作を実行し、AFD341のFileA~FileDが不揮発性メモリ20に格納された状態である。実データ部300Cは、例えば、メモリブロックMB1~MB3を含む。
【0163】
図28Aは、例えば、下記の処理が実行された後の実データ部300Cにおけるデータ配置を模式的に示した図である。
ホスト30は、FileA~FileDとは別のデータを作成し、メモリシステム1に送信する。メモリシステム1は、当該他のデータを、メモリブロックMB1のページ000~ページ031に格納する。当該他のデータは、ページ000~ページ031に格納された有効データであり、
図28B、
図28D及び
図29のテーブル部400Cで、FileA~FileD以外の有効データに対応するLBAに対応付けられた物理アドレスのページ000~ページ031のファイルデータである。
その後、ホスト30は、FileAを作成し、メモリシステム1に送信する。メモリシステム1は、FileAを、メモリブロックMB1のページ032~ページ063に格納する。また、ホスト30は、ページ000~ページ031に保存されているデータとは別の他のデータを作成し、メモリシステム1に送信する。メモリシステム1はホスト30から受信した他のデータをメモリブロックMB1のページ064~ページ095に格納する。当該他のデータは、ページ064~ページ095に格納された有効データであり、
図28B、
図28D及び
図29のテーブル部400Cで、FileA~FileD以外の有効データに対応するLBAに対応付けられた物理アドレスのページ064~ページ095のファイルデータである。
その後、ホスト30は、FileB~FileDを作成し、メモリシステム1に送信する。メモリシステム1は、FileB~FileDを、メモリブロックMB1のページ096~ページ127、メモリブロックMB2のページ128~ページ223する。MB2のページ192~ページ255、及び、MB3のページ256~ページ383は、実データ部300及びテーブル部400の物理アドレスと論理アドレスとの対応付けの無いページであり、消去後のページ(EP)である。
【0164】
図28Bに示されるように、テーブル部400Cは、例えば、3つのL2Pテーブル(第1のL2Pテーブル400a、第2のL2Pテーブル400b、及び第3のL2Pテーブル400c)を含む。第1のL2Pテーブル400aでは、物理アドレスのページ000~ページ031とFileA~FileD以外の有効データに対応するLBAとが対応付けられており、ページ000~ページ031のファイルデータが有効データとなっている。また、物理アドレスのページ032~ページ063と論理アドレスの0000h~007Fhとが対応付けられており、ページ032~ページ063に格納されたFileAが有効データとなっている。また、物理アドレスのページ064~ページ095とFileA~FileD以外の有効データに対応するLBAが対応付けられており、物理アドレスのページ064~ページ095のファイルデータが有効データとなっている。物理アドレスのページ096~ページ127と論理アドレスの0080h~00FFhとが対応付けられており、ページ096~ページ127に格納されたFileBが有効データとなっている。第2のL2Pテーブル400bでは、物理アドレスのページ128~ページ159と論理アドレスの0100h~017Fhとが対応付けられており、ページ128~ページ159に格納されたFileCが有効データとなっている。また、物理アドレスのページ160~ページ191と論理アドレスの0180h~027Fhとが対応付けられており、ページ160~ページ191に格納されたFileDが有効データとなっている。第2のL2Pテーブル400bのページ192~ページ256の物理アドレス、第3のL2Pテーブル400cの各ページの物理アドレスは、論理アドレスとの対応付けの無いページであり、消去後の再利用可能なページ(EP)である。
【0165】
<5-4.メモリシステム1の動作方法>
図27~
図29を参照し、第5実施形態に係るメモリシステム1の動作方法を説明する。
図27は第5実施形態に係るメモリシステム1の動作方法を示すフローチャートである。
図28Cは第5実施形態に係る実データ部300Cの構成を示す図であり、
図28Dは第5実施形態に係るテーブル部400Cの構成を示す図である。
図29は第5実施形態に係るテーブル部400Cの構成を示す図である。
【0166】
図27を参照し、第5実施形態に係るメモリシステム1の動作方法を説明する。はじめに、メモリシステム1は、第5実施形態に係るメモリシステム1の動作方法を開始する(ステップS801)。
【0167】
次に、メモリコントローラ10は、「1-7.メモリシステム1の動作方法の第2の例(第2例)」で説明した書き込み動作に基づき、有効データが格納されたメモリブロックMB1のページ000~ページ031に続けて、FileAを不揮発性メモリ20のページ032~ページ063に格納する(ステップS802)。
【0168】
メモリコントローラ10は、ステップS802と同様に、ステップS803~ステップS805を実行し、有効データが格納されたメモリブロックMB1のページ064~ページ095に続けて、FileBをメモリブロックMB1のページ096~ページ127に格納し、FileCをメモリブロックMB2のページ128~ページ159に格納し、有効データが格納されたメモリブロックMB2のページ160~ページ191に続けて、FileDをメモリブロックMB2のページ160~ページ191に格納する。ステップS805終了時点での、実データ部300C及びテーブル部400Cの状態が、
図28A及び
図28Bに示された状態である。
【0169】
メモリコントローラ10は、ステップS805では、CFデータ(11)を含むライトコマンドWCMDを受信している。よって、メモリコントローラ10は、CFデータ(11)に基づき、ABO処理を実行する(ステップS806)。データ管理部110は、メモリI/Fを介して、FileA~FileDを、LBA0000h~027Fhの順に、メモリブロックMB2のページ192~ページ255、及びメモリブロックMB3のページ256~ページ319に格納する。すなわち、データ管理部110は、FileA~FileDを、LBAの順に、不揮発性メモリ20の連続する物理アドレスに対応するページに格納する。このとき、データ管理部110は、メモリブロックMB1のページ032~ページ063に格納されたFileA、メモリブロックMB1のページ096~ページ127に格納されたFileB、メモリブロックMB2のページ128~ページ191に格納されたFileC及びFileDを、論理アドレスと対応付けされていない無効データとする。ステップS807終了時点での実データ部300Cの状態が
図28Cに示された状態である。
【0170】
この時、データ管理部110は、メモリブロックMB1のLBA0000h~00FFhと、物理アドレスのページ192~ページ255とを対応付けてL2Pテーブル400bに格納し、LBA0100h~027Fhと、物理アドレスのページ256~ページ319とを対応付けて、第3のL2Pテーブル400cに格納する。また、データ管理部110は、第1のL2Pテーブル400abにおいて、論理アドレスの0000h~007Fhに対応していた物理アドレスのページ032~ページ065に格納されていたFileA、及び、論理アドレスの0080h~00FFhに対応していた物理アドレスのページ096~ページ127に格納されていたFileBを無効データとする。また、データ管理部110は、第1のL2Pテーブル400bにおいて、論理アドレスの0100h~027Fhに対応していた物理アドレスのページ128~ページ191に格納されていたFileC及びFileDを無効データとする。ステップS807終了時点でのテーブル部400Cの状態が
図28Dに示された状態である。なお、第5実施形態において、無効となったデータのLBA(斜線の箇所)の対応付けは存在しなくてもよく、第1のL2Pテーブル400a、第2のL2Pテーブル400b、及び第3のL2Pテーブル400cのLBAがEPとなっている対応付けは存在しなくてもよい。
【0171】
次に、データ管理部110は、ABO処理の終了を受けて、プログラム116を読み出すと共に実行し、アプリケーション専用L2Pテーブル410を、不揮発性メモリ20に生成する(ステップS807)。
【0172】
データ管理部110は、FileA~FileDのLBA0000h~027Fhと、物理アドレスに対応するページ192~ページ319とを対応付けて、アプリケーション専用L2Pテーブル410Dに格納する。ステップS807終了時点でのテーブル部400の状態が、
図29に示された状態である。
【0173】
次に、データ管理部110は、ホスト30からリードコマンドRCMDを含む読み出し要求を受信し、不揮発性メモリ20からアプリケーション専用L2Pテーブル410を読み出してRAM12上に展開する(ステップS808)。
【0174】
データ管理部110は、RAM12上に展開されたアプリケーション専用L2Pテーブル410に基づき、不揮発性メモリ20のページ192~ページ3196に格納されたFileA~FileDを、この順番で読み出すことができる(ステップS809)。
【0175】
メモリシステム1が、読み出し動作を実行し、ステップS809が完了すると、第5実施形態に係るメモリシステム1の動作は終了する(ステップS810)。
【0176】
第5実施形態に係るメモリシステム1の動作方法は、例えば、ステップ806の終了時点では、FileA~FileDを2つのL2Pテーブルに渡って管理することを含む。なお、メモリシステム1がFileA~FileDを2つのL2Pテーブルに渡って管理する状態は、GC処理のあとでも生じる可能性がある。例えば、ステップ806の終了時点で、FileA~FileDを読み出す場合には、データ管理部110は、第2のL2Pテーブル400b及び第3のL2Pテーブル400cをそれぞれ、不揮発性メモリ20から読み出して、RAM12上に展開する必要がある。すなわち、RAM12上では、第2のL2Pテーブル400bと第3のL2Pテーブル400cとが入れ替わる。この場合、データの読み出し時間が長くなり、読み出し動作が遅くなる。
【0177】
一方、第5実施形態に係るメモリシステム1の動作方法は、ステップS807において、アプリケーション専用L2Pテーブル410を不揮発性メモリ20に生成することを含む。その結果、FileA~FileDを読み出す場合には、データ管理部110は、アプリケーション専用L2Pテーブル410を、不揮発性メモリ20から読み出して、RAM12上に展開することによって、L2Pテーブルを入れ替える時間を短縮することができる。よって、第5実施形態に係るメモリシステム1の動作方法は、データの読み出し時間を短縮することができると共に、読み出し動作を高速化できる。
【0178】
以上、本開示のメモリシステムのいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で適宜組み合わせて実施してよく、種々の省略、置き換え、変更を行うことができる。これらの実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0179】
1:メモリシステム、10:メモリコントローラ、11:プロセッサ、15:ECC、17:ホストインターフェース(ホストI/F)、18:ホストインターフェース(メモリI/F)、19:内部バス、20:不揮発性メモリ、21:メモリチップ、22:ダイ、23:メモリ部、30:ホスト、32:アプリケーション、33:アプリケーション、34:アプリケーション、100:論理アドレス空間、100A:論理アドレス空間、100B:論理アドレス空間、110:データ管理部、111:W/R管理部、115:プログラム、116:プログラム、121:ファイルシステム、122:タイムスタンプ、300:実データ部、300A:実データ部、300B:実データ部、300C:実データ部、321:アプリケーションファイルデータ、400:テーブル部、400a:L2Pテーブル、400b:L2Pテーブル、400c:L2Pテーブル、400d:L2Pテーブル、400A:テーブル部、400B:テーブル部、400C:テーブル部、410:アプリケーション専用L2Pテーブル、500:フォーマット、502:動作コード、504:個別設定コード、508:連続フラグ、509:リザーブ領域、510:グループナンバー、514:制御バイト、550:期間、552:期間、600:フォーマット、604:個別設定コード、610:グループナンバー、614:制御バイト、616:アプリケーションコード、618:第1のレベルオーダー、620:第2のレベルオーダー、622:第3のレベルオーダー、630:タイムスタンプテーブル、630U:タイムスタンプテーブル、700:フォーマット、704:個別設定コード、709:リザーブ領域、714:制御バイト、719:リザーブ領域、724:制御バイト