JP7408449B2 - 記憶装置及び記憶方法 - Google Patents

記憶装置及び記憶方法 Download PDF

Info

Publication number
JP7408449B2
JP7408449B2 JP2020050893A JP2020050893A JP7408449B2 JP 7408449 B2 JP7408449 B2 JP 7408449B2 JP 2020050893 A JP2020050893 A JP 2020050893A JP 2020050893 A JP2020050893 A JP 2020050893A JP 7408449 B2 JP7408449 B2 JP 7408449B2
Authority
JP
Japan
Prior art keywords
volatile memory
region
state
data
encoded frame
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2020050893A
Other languages
English (en)
Other versions
JP2021149768A (ja
Inventor
亜季則 長岡
三徳 田所
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kioxia Corp
Original Assignee
Kioxia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Kioxia Corp filed Critical Kioxia Corp
Priority to JP2020050893A priority Critical patent/JP7408449B2/ja
Priority to US17/009,694 priority patent/US11531616B2/en
Publication of JP2021149768A publication Critical patent/JP2021149768A/ja
Priority to US18/084,407 priority patent/US11853208B2/en
Application granted granted Critical
Publication of JP7408449B2 publication Critical patent/JP7408449B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

本発明の実施形態は不揮発性メモリを備える記憶装置及び記憶方法に関する。
記憶装置の外部の情報処理装置であるホストは、記憶装置のデータの記憶位置を、論理アドレスで指す。記憶装置は、論理アドレスと記憶装置が備える不揮発性メモリの物理アドレスとの対応を示すアドレス変換テーブル(ルックアップテーブル、LUTとも称される)を作成する。
アドレス変換テーブルは、不揮発性メモリに記憶されている。ただし、アドレス変換テーブルの少なくとも一部は、不揮発性メモリから読み出し速度がより速い揮発性メモリに複製されることがある。ホストから指定される論理アドレスが揮発性メモリに記憶されているアドレス変換テーブルに含まれていれば、アドレス変換テーブルがより高速に参照される。
米国特許出願公開第2011/0131374号明細書 米国特許第7653779号明細書 特開2012-94132号公報
揮発性メモリがアドレス変換テーブルを記憶すると、アドレス変換以外の用途に使用できる揮発性メモリの容量が減少する課題がある。
本発明の目的は、揮発性メモリが記憶するアドレス変換テーブルのサイズを削減することができる記憶装置及び記憶方法を提供することである。
実施形態に係る記憶装置は、不揮発性メモリと、揮発性メモリと、複数の論理アドレスにそれぞれ対応する複数のエントリに前記不揮発性メモリの複数の物理アドレスがそれぞれ記憶されるアドレス変換テーブルを用いて不揮発性メモリにアクセスするコントローラを具備する。不揮発性メモリに書き込まれるデータと揮発性メモリに書き込まれるデータは符号化され、符号化フレームとして不揮発性メモリと揮発性メモリに書き込まれる。アドレス変換テーブルの所定数のエントリはリージョンを構成する。アドレス変換テーブルは、複数のリージョンに関するデータの先頭アドレスが複数の符号化フレームの先頭アドレスと一致する第2状態で不揮発性メモリに記憶される。アドレス変換テーブルの少なくとも一部は、第2状態又は少なくとも一つのリージョンに関するデータの先頭アドレスが少なくとも一つの符号化フレームの先頭アドレスと一致せず、前記複数の符号化フレームの間に空き領域が生じない第1状態で揮発性メモリにも記憶される。
実施形態に係る情報処理システムの構成の一例を示すブロック図である。 実施形態に係るアドレス変換テーブルの一例を示す図である。 実施形態に係るECCフレームのデータ構造の一例を示す図である。 実施形態に係るライト処理の一例を示すフローチャートである。 実施形態に係るライト処理の一例を示すフローチャートである。 (a)本願の実施形態に係るLUTキャッシュ26cの第1状態のデータ配置を示す図である。(b)本願の実施形態に係るLUTキャッシュ26cの第2状態のデータ配置を示す図である。(c)本願の実施形態に係るLUTキャッシュ26cの第3状態のデータ配置を示す図である。 (a)実施形態に係るアドレス変換テーブルの不揮発化処理におけるLUTキャッシュ26cの第4状態のデータ配置を示す図である。(b)実施形態に係るアドレス変換テーブルの不揮発化処理におけるLUTキャッシュ26cの第5状態のデータ配置を示す図である。(c)実施形態に係るアドレス変換テーブルの不揮発化処理における不揮発性メモリ24のLUTエリアの第6状態のデータ配置を示す図である。 実施形態に係るアドレス変換テーブルの不揮発化処理の一例を示すフローチャートである。 (a)実施形態に係るアドレス変換テーブルの展開処理における不揮発性メモリ24のLUTエリアの第7状態のデータ配置を示す図である。(b)実施形態に係るアドレス変換テーブルの展開処理におけるLUTキャッシュ26cの第8状態のデータ配置を示す図である。(c)実施形態に係るアドレス変換テーブルの展開処理におけるLUTキャッシュ26cの第9状態のデータ配置を示す図である。 (a)実施形態に係るアドレス変換テーブルの展開処理におけるLUTキャッシュ26cの第10状態のデータ配置を示す図である。(b)実施形態に係るアドレス変換テーブルの展開処理におけるLUTキャッシュ26cの第11状態のデータ配置を示す図である。 実施形態に係るアドレス変換テーブルの展開処理の一例を示すフローチャートである。 実施形態に係るアドレス変換テーブルの展開処理の一例を示すフローチャートである。 実施形態によるアドレス変換テーブルの記憶方式の効果を示すために、実施形態による方式と他の方式において揮発性メモリが記憶するアドレス変換テーブルのサイズを比較する図である。
以下、図面を参照して、実施形態を説明する。以下の説明は、実施形態の技術的思想を具体化するための装置や方法を例示するものであって、実施形態の技術的思想は、以下に説明する構成要素の構造、形状、配置、材質等に限定されるものではない。当業者が容易に想到し得る変形は、当然に開示の範囲に含まれる。説明をより明確にするため、図面において、各要素のサイズ、厚み、平面寸法又は形状等を実際の実施態様に対して変更して模式的に表す場合もある。複数の図面において、互いの寸法の関係や比率が異なる要素が含まれることもある。複数の図面において、対応する要素には同じ参照数字を付して重複する説明を省略する場合もある。一つの要素に複数の呼称を付す場合がある。なお、以下の説明において、「接続」は直接接続のみならず、他の要素を介して接続されることも意味する。
図1は、本発明の実施形態に係る情報処理システムの構成の一例を示すブロック図である。情報処理システム1は、ホストデバイス(以下、ホストと称する)10と記憶装置20とを含む。
ホスト10は、記憶装置20にアクセスする外部の情報処理装置である。
記憶装置20は、コントローラ22、不揮発性メモリ24、揮発性メモリ26等を備える。
コントローラ22は、不揮発性メモリ24、揮発性メモリ26の動作を制御する。コントローラ22は、System-on-chip(SoC)のような回路によって実現され得る。
不揮発性メモリ24は、データを記憶する。不揮発性メモリ24は電力が供給されなくても記憶したデータを保持できる。不揮発性メモリ24は、二次元構造のNAND型のフラッシュメモリであってもよいし、三次元構造のNAND型のフラッシュメモリであってもよい。不揮発性メモリ24としては、NAND型のフラッシュメモリに限らず、NOR型のフラッシュメモリや他の不揮発性半導体メモリが用いられてもよい。
揮発性メモリ26もデータを記憶する。揮発性メモリ26は、電力が供給されないと記憶したデータを保持できない。揮発性メモリ26は、例えばDDR3L(Double Data Rate 3 Low voltage)規格のDRAM(Dynamic Random Access Memory)である。揮発性メモリ26は、コントローラ22の内部に設けてもよい。その場合、揮発性メモリ26としてSRAM(Static Random Access Memory)を用いてもよい。また、ホスト10に備えられているメインメモリとしてのDRAMの一部をホストメモリバッファ(Host Memory Buffer: HMB)として揮発性メモリ26の代わりに利用してもよい。
次に、不揮発性メモリ24の詳細な構成を説明する。不揮発性メモリ24のメモリセルアレイは、複数のブロックB0~Bm-1を含む。ブロックB0~Bm-1の各々は複数のページ(ここではページP0~Pn-1)を含む。ブロックB0~Bm-1は、データ消去の処理単位として機能する。ブロックは、消去ブロック又は物理ブロックと称されることもある。ページP0~Pn-1の各々は、同一ワード線に接続された複数のメモリセルを含む。ページP0~Pn-1は、データ書き込みとデータ読み出しの処理単位である。ページの代わりにワード線をデータ書き込みとデータ読み出しの処理単位としてもよい。
ブロックB0~Bm-1の各々に対して許容できるプログラムおよび消去の回数(以下P/Eサイクルと称される)の最大値は限られている。あるブロックの1回のP/Eサイクルは、このブロックの全てのメモリセルを消去状態にするためのデータ消去とこのブロックのページそれぞれにデータを書き込むプログラムを含む。
次に、揮発性メモリ26の詳細な構成を説明する。揮発性メモリ26は、ライトバッファ26a、リードバッファ26b、ルックアップテーブルキャッシュ(LUTキャッシュ)26c、及び一時領域26dを備える。ライトバッファ26aは、不揮発性メモリ24に書き込むデータを一時的に記憶する。リードバッファ26bは、不揮発性メモリ24から読み出されたデータを一時的に記憶する。LUTキャッシュ26cは、論理アドレスと物理アドレスとの対応を示すアドレス変換テーブル(ルックアップテーブル、LUTとも称される)の少なくとも一部のデータ(コピー)を記憶する。一時領域26dは、LUTの更新等の際、作業中のLUTのデータを一時的に記憶する。
論理アドレスは、ホスト10が、情報処理システム1におけるデータの記憶位置を論理的に指すアドレスである。論理アドレスの例としては、論理ブロックアドレス(LBA)がある。物理アドレスは、不揮発性メモリ24における物理的なデータの記憶位置を指すアドレスである。論理アドレスから対応した物理アドレスを求めることはアドレス変換又はアドレス解決と称される。
次に、アドレス変換テーブル(LUT)について、詳細に説明する。図2は、実施形態に係るアドレス変換テーブルの一例を示す図である。LUTは、複数の論理アドレスと不揮発性メモリ24の複数の物理アドレスそれぞれの間の対応表である。LUTの最小構成単位をエントリと呼ぶ。エントリは論理アドレスそれぞれに対応しており、論理アドレスに対応する物理アドレスが各エントリに記憶される。LUTは不揮発性メモリ24に記憶される。LUTのサイズは、不揮発性メモリ24の記憶容量の約1/1000程度である。LUTは複数のエントリから構成されるリージョンと呼ばれる単位で管理される。例えば128エントリが1リージョンを構成する。図2は、リージョン内にエントリが論理アドレスの順番(例えば、昇順)に配置される例を示すが、リージョン内のエントリの配置はこれに限らず、任意である。
不揮発性メモリ24とLUTキャッシュ26cとの間で転送されるLUTは、エントリ単位ではなく、リージョン単位である。エントリへのアクセスは、リージョンの先頭からの距離を表す値(オフセット)に基づいて行われる。コントローラ22は、LUTの少なくとも一部分を不揮発性メモリ24からLUTキャッシュ26cに複製する。複製処理は展開処理、揮発化処理とも称される。複製するLUTは、少なくとも一つのリージョンによって構成されている。LUTキャッシュ26cのサイズは不揮発性メモリ24に記憶されているLUTの全てのエントリを記憶できるようなサイズでもよいし、不揮発性メモリ24に記憶されているLUTの一部分のエントリしか記憶できないようなサイズでもよい。後者の場合、コントローラ22は、複製するLUTを、アクセスされる頻度が高いと予想される物理アドレスが含まれるように選択してもよい。LUTキャッシュ26cに複製されたLUTを、複製LUTと称する。
コントローラ22は、アクセスする論理アドレスが複製LUTに含まれている場合は、複製LUTを用いてアドレス変換する。コントローラ22は、アクセスする論理アドレスが複製LUTに含まれていない場合は、LUTの中のアクセスする論理アドレスを含むリージョンを複製LUTとして不揮発性メモリ24から揮発性メモリ26に複製する。そして、コントローラ22は、複製LUTを用いてアドレス変換する。
なお、複製LUTは不揮発性メモリ24へのデータの書き込みによって更新されることもある。複製LUTが更新されると、更新後の複製LUTのコピーが不揮発性メモリ24に書き込まれる。これにより、不揮発性メモリ24に記憶されているLUTも更新される。
不揮発性メモリ24の一つのページへのデータの書き込みは、一つのP/Eサイクル当たり一回のみ可能である。このため、コントローラ22は、或る論理アドレスに対応するデータを更新する際、更新データを、更新前のデータを格納する物理アドレスではなく、別の物理アドレスに書き込む。そして、コントローラ22は、LUTにおいて別の物理アドレスのエントリに或る論理アドレスを対応付けると共に、更新前のデータのエントリを無効化する。不揮発性メモリ24にデータを書き込む際、コントローラ22は、ブロック毎のP/E回数ができるだけ均等になるように、論理アドレスと物理アドレスの対応関係を調整する。
LUTから参照されているデータ(すなわち論理アドレスに対して関連付けされている最新のデータ)は有効データと称される。また、どの論理アドレスとも関連付けされていないデータは無効データと称される。有効データは、後にホスト10からリードされる可能性があるデータである。無効データは、ホスト10からリードされる可能性が無いデータである。
次に、コントローラ22の詳細な構成を説明する。コントローラ22は、CPU32、ホストインタフェース(ホスト I/F)34、NANDインタフェース(NAND I/F)36、DRAMインタフェース(DRAM I/F)38、誤り訂正符号(ECC)エンコーダ/デコーダ40等を備える。CPU32、ホスト I/F34、NAND I/F36、DRAM I/F38、ECCエンコーダ/デコーダ40はバスライン42に接続される。
CPU32は、不揮発性メモリ24に記憶されているファームウェアと協働して、不揮発性メモリ24のリードコマンド、ライトコマンド等のホスト10からの様々なコマンドを処理するためのコマンド処理等を実行することができる。そのため、CPU32は、リード制御部32a、ライト制御部32b、LUT制御部32c等の機能部として動作する。リード制御部32aは不揮発性メモリ24からのデータの読み出しを制御する。ライト制御部32bは不揮発性メモリ24へのデータの書き込みを制御する。LUT制御部32cはLUTの作成、更新、不揮発化、展開等を制御する。リード制御部32a、ライト制御部32b、LUT制御部32c等の機能部の一部又は全部は、コントローラ22の内部の専用ハードウェアによって実現されてもよい。
ホスト I/F34は、ホスト10とコントローラ22とを通信可能に接続する。ホスト I/F34としては、様々な規格が使用され得る。例えばSmall Computer System Interface(SCSI)(登録商標)、PCI Express(登録商標)(PCIe(登録商標)とも称する)、Serial Attached SCSI(SAS)(登録商標)、Serial Advanced Technology Attachment(SATA)(登録商標)、Non Volatile Memory Express(NVMe(登録商標))、Universal Serial Bus(USB)(登録商標)、Universal Asynchronous Receiver/Transmitter(UART)(登録商標)、Ethernet(登録商標)、Fibre channel等の規格がホスト I/F34として使用され得る。
NAND I/F36は、コントローラ22と不揮発性メモリ24とを通信可能に接続する。NAND I/F36としては、Toggle DDR、Open NAND Flash Interface(ONFI)等が使用され得る。NAND I/F36は、複数のチャンネルChを介して、不揮発性メモリ24の複数のチップにそれぞれ接続されていてもよい。
DRAM I/F38は、コントローラ22と揮発性メモリ26とを通信可能に接続する。
ECCエンコーダ/デコーダ40は、不揮発性メモリ24に記憶されるデータまたは揮発性メモリ26に記憶されるデータに対して誤り訂正符号(ECC)データを生成し、記憶されるデータとECCデータとからECCフレームを構成する。この動作を、符号化(エンコード)という。ECCエンコーダ/デコーダ40は、ECCフレームを不揮発性メモリ24又は揮発性メモリ26に記憶させる。また、ECCエンコーダ/デコーダ40は、不揮発性メモリ24又は揮発性メモリ26から読み出されたECCフレームの誤りを訂正し、記憶されているデータを取り出す。この動作を、復号(デコード)という。ECCエンコーダ/デコーダ40によって符号化されるデータの一例としては、LUTやユーザデータがある。LUTについてのECCフレームとユーザデータについてのECCフレームとはサイズが異なることがある。ECCデータの例は、ハミング符号、BCH符号等がある。
ここで、LUTに関するECCフレームのデータ配置の一例を説明する。図3は実施形態に係るECCフレームのデータ配置の一例を示す図である。一つのECCフレームは、例えば一つのリージョンの一部分のデータ(リージョンデータ)とECCデータとから構成される。図3では、ECCデータはリージョンデータの後尾に配置されているが、ECCデータはECCフレーム内のどこに配置されてもよい。たとえば、先頭でも中間でもよい。さらに、ECCデータは一カ所に纏めて配置されず、ECCフレーム内に分散して配置されてもよい。ECCフレームのサイズとリージョンのサイズには制限がない。例えば、ECCフレームのサイズは8バイト、リージョンのサイズは128バイト、としてもよい。この場合、一つのリージョンは複数のECCフレームに分割して記憶される。また、一つのECCフレーム内に空き領域ができる場合もある。
以上のように構成された記憶装置20のライト処理の一例を図4A、図4Bに示すフローチャートを参照して説明する。図4A、図4Bは、ホスト10からライトコマンドを受信したCPU32の動作を示す。ライトコマンドは、ユーザデータと論理アドレスを含む。
ライトコマンドを受信すると(スタート)、CPU32は、ライトコマンドから論理アドレスを取り出す(S20)。論理アドレスを取り出した後、CPU32は、ライトコマンドからユーザデータを取り出す(S22)。ユーザデータを取り出した後、CPU32は、ライト制御部32bを使って、取り出したユーザデータを不揮発性メモリ24に書き込む(S24)。不揮発性メモリ24は、書き込みの順番が決まっている。例えば、物理アドレスの昇順に不揮発性メモリ24にデータが書き込まれる。なお、CPU32は、S22、S24を先に実行し、その後S20を実行してもよい。
ユーザデータを不揮発性メモリ24に書き込んだ後、CPU32は、LUT制御部32cを使って、S20で取り出した論理アドレスと一致する論理アドレスに対応するエントリがLUTキャッシュ26c内にあるか否かを判定する(S26)。
S20で取り出した論理アドレスと一致する論理アドレスに対応するエントリがLUTキャッシュ26c内にある場合(S26 YES)、CPU32は、S20で取り出した論理アドレスと一致する論理アドレスに対応するエントリを含むリージョンデータを特定する(S32)。リージョンデータを特定した後、CPU32は、リード制御部32aを使って、特定したリージョンデータを含むECCフレームをLUTキャッシュ26cから読み出す(S34)。ECCフレームを読み出した後、CPU32は、読み出したECCフレームをECCエンコーダ/デコーダ40へ送信する(S36)。
CPU32からECCフレームを受信すると、ECCエンコーダ/デコーダ40は、受信したECCフレームを復号し、リージョンデータを取り出す(S38)。リージョンデータを取り出した後、ECCエンコーダ/デコーダ40は、取り出したリージョンデータをCPU32へ送信する(S40)。
リージョンデータを受信すると、CPU32は、受信したリージョンデータの内、S20で取り出した論理アドレスと一致する論理アドレスに対応するエントリに、S24で書き込んだユーザデータの物理的な記憶位置を指す物理アドレスを設定する(S42)。CPU32は、物理アドレスが設定されたリージョンデータをECCエンコーダ/デコーダ40へ送信する(S44)。
リージョンデータを受信すると、ECCエンコーダ/デコーダ40は、受信したリージョンデータを符号化し、ECCフレームを構成する(S46)。ECCエンコーダ/デコーダ40は、ECCフレームをCPU32へ送信する(S47)。
CPU32は、受信したECCフレームをLUTキャッシュ26cに記憶させる(S48)。S48の後、処理は終了する(エンド)。これにより、S24で書き込まれたユーザデータの物理アドレスと論理アドレスとの対応関係が複製LUTとしてLUTキャッシュ26cに書き込まれる。なお、詳細は後述するが、LUTキャッシュ26cに記憶されている複製LUTは、適宜なタイミングで不揮発性メモリ24に転送され、不揮発化される。
S20で取り出した論理アドレスと一致する論理アドレスに対応するエントリがLUTキャッシュ26c内に無い場合(S26 NO)、CPU32は、S20で取り出した論理アドレスと一致する論理アドレスに対応するエントリが不揮発性メモリ24内にあるか否かを判定する(S28)。
S20で取り出した論理アドレスと一致する論理アドレスに対応するエントリが不揮発性メモリ24内にある場合(S28 YES)、CPU32は、S20で取り出した論理アドレスと一致する論理アドレスに対応するエントリを含むリージョンデータを特定する(S52)。リージョンデータを特定した後、CPU32は、特定したリージョンデータを含むECCフレームを不揮発性メモリ24から読み出す(S54)。ECCフレームを読み出した後、CPU32は、読み出したECCフレームをLUTキャッシュ26cに記憶させる(S56)。これにより、S24で書き込まれたユーザデータの物理アドレスが記憶されているエントリを含むリージョンデータがLUTキャッシュ26cに書き込まれる。CPU32は、S56の前に、属性情報に基づいて、最後に参照された時刻が最も古いリージョンをLUTキャッシュ26cから削除してもよい。削除として実際に無効データを上書きする場合は、対象となるECCフレームに含まれる別のリージョンデータを破壊しないようにする必要がある。属性情報とは、リージョンが最後に参照された時刻を示すデータである。属性情報は、リージョンに付加されている場合がある。
S56の後、CPU32は、S20で取り出した論理アドレスと一致する論理アドレスに対応するエントリを含むリージョンデータを特定する(S32)。この後、S34、S36、S38、S40、S42、S44、S46、S47、S48の処理を実行する。
S20で取り出した論理アドレスと一致する論理アドレスに対応するエントリが不揮発性メモリ24内に無い場合(S28 NO)、CPU32は、S20で取り出した論理アドレスと一致する論理アドレスに対応するエントリを含む複数の空白エントリからなるリージョンデータを一時領域26dに作成する(S62)。空白エントリとは、論理アドレスに対応しているが、物理アドレスは無効であるエントリである。リージョンデータを作成した後、CPU32は、作成したリージョンデータを一時領域26dから読み出す(S64)。リージョンデータを読み出した後、CPU32は、読み出したリージョンデータをECCエンコーダ/デコーダ40へ送信する(S66)。
リージョンデータを受信すると、ECCエンコーダ/デコーダ40は、受信したリージョンデータを符号化し、ECCフレームを構成する(S68)。ECCエンコーダ/デコーダ40は、ECCフレームをCPU32へ送信する(S69)。
CPU32は、受信したECCフレームをLUTキャッシュ26cに記憶させる(S70)。CPU32は、S70の前に、属性情報に基づいて、最後に参照された時刻が最も古いリージョンをLUTキャッシュ26cから削除してもよい。
S70の後、CPU32は、S20で取り出した論理アドレスと一致する論理アドレスに対応するエントリを含むリージョンデータを特定する(S32)。この後、S34、S36、S38、S40、S42、S44、S46、S47、S48の処理を実行する。
図5(a)は、本願の実施形態に係るLUTキャッシュ26cの第1状態のデータ配置の一例を示す。図5(b)は、本願の実施形態に係るLUTキャッシュ26cの第2状態のデータ配置の一例を示す。図5(c)は、本願の実施形態に係るLUTキャッシュ26cの第3状態のデータ配置の一例を示す。図5(a)、(b)、(c)それぞれは、LUTキャッシュ26cのアドレス空間におけるデータの配置を示す。図5(a)、(b)、(c)それぞれの一番下の端はベースアドレスを示す。
LUTキャッシュ26cの第1状態においては、複数のリージョンデータがそれらの間に空き領域が生じないように詰めて記憶される。第1状態はPacked状態とも称される。図5(a)の例では、5個のリージョンデータR0~R4が9個のECCフレームECC0~ECC8に詰めて記憶されている。図5では、説明の便宜上、一つのリージョンデータのサイズは一つのECCフレームより大きいが、二つのECCフレームより小さい例を示す。しかし、一つのリージョンデータのサイズはi(iは3以上の正整数)個のECCフレームより大きいが、(i+1)個のECCフレームより小さくてもよい。さらに、一つのリージョンデータのサイズは一つのECCフレームより小さくてもよい。
LUTキャッシュ26cの第2状態においては、複数のリージョンデータがそれらの間に空き領域が生じるように記憶される。第2状態はAligned状態とも称される。図5(b)の例では、各リージョンデータが二つのECCフレームにAligned状態で記憶されている。すなわち、5個のリージョンデータR0~R4が10個のECCフレームECC0~ECC9に空き領域を残して記憶されている(図5(b)、斜線領域)。空き領域に他のリージョンデータは記憶されていない。
LUTキャッシュ26cの第3状態においては、一部のリージョンデータはPacked状態で、他のリージョンデータはAligned状態で記憶される。図5(c)の例では、4個のリージョンデータR0~R3が8個のECCフレームECC0~ECC7にPacked状態で記憶される。なお、リージョンデータR3の一部が記憶されるECCフレームECC7は、空き領域を含む。一つのリージョンデータR4が二つのECCフレームECC8、ECC9に空き領域とともにAligned状態で記憶されている。LUTキャッシュ26cのアドレス空間内で、リージョンデータがAligned状態で記憶される領域(ECCフレーム)はAligned領域とも称される。LUTキャッシュ26cのアドレス空間内で、リージョンデータがPacked状態で記憶される領域(ECCフレーム)はPacked領域とも称される。
リージョンデータが第1状態(Packed状態)でLUTキャッシュ26cに記憶されると、リージョンデータ間に空き領域が生じない。このため、第1状態のLUTキャッシュ26c(揮発性メモリ26)の記憶容量の利用効率は高い。第1状態では、リージョンデータの先頭アドレスとECCフレームの先頭アドレスが必ずしも一致しない。そのため、第1状態では、リージョンデータを読み出す際に、アドレスオフセット等の処理が必要となることがある。つまり、第1状態は、リージョンデータの読出しに時間がかかるデータ配置である。
リージョンデータが第2状態(Aligned状態)でLUTキャッシュ26cに記憶されると、リージョンデータ間に空き領域が生じる。このため、第2状態のLUTキャッシュ26c(揮発性メモリ26)の記憶容量の利用効率は低い。第2状態では、リージョンデータの先頭アドレスとECCフレームの先頭アドレスが一致している。このため、第2状態では、リージョンデータにアクセスする際に、アドレスオフセット等の処理が不要である。つまり、第2状態は、リージョンデータの読出しに時間がかからないデータ配置である。
リージョンデータが第3状態(Packed状態とAligned状態が混合している状態)でLUTキャッシュ26cに記憶されると、第1状態と第2状態それぞれの長所を部分的に受けることができる。なお、ECCフレームをLUTキャッシュ26cに記憶させる際、Packed状態の複数のECCフレームを作成し、Packed領域に記憶させてもよいし、Aligned状態の複数のECCフレームを作成し、一旦Aligned領域に記憶させ、Aligned状態の複数のECCフレームをPacked状態の複数のECCフレームに変更した後、Packed領域に記憶させてもよい。
図6(a)は、実施形態に係るアドレス変換テーブルの不揮発化処理におけるLUTキャッシュ26cの第4状態のデータ配置の一例を示す。図6(b)は、実施形態に係るアドレス変換テーブルの不揮発化処理におけるLUTキャッシュ26cの第5状態のデータ配置の一例を示す。図6(c)は、実施形態に係るアドレス変換テーブルの不揮発化処理における不揮発性メモリ24内のLUTエリアの第6状態のデータ配置の一例を示す。LUTエリアのサイズは、LUTの全リージョンの物理データを記憶するサイズである。図6(a)、(b)それぞれは、LUTキャッシュ26cのアドレス空間におけるデータの配置を示す。図6(c)は、不揮発性メモリ24のアドレス空間におけるデータの配置を示す。図6(a)、(b)、(c)それぞれの一番下の端はベースアドレスを示す。図6(a)に示すLUTキャッシュ26cの第4状態は、リージョンデータ(R0,R1,R2)がPacked領域に記憶され、Aligned領域にはリージョンデータが記憶されていない状態である。図6(b)に示すLUTキャッシュ26cの第5状態は、リージョンデータ(R0,R1,R2)がPacked領域に記憶され、Packed領域に記憶されている1つのリージョンデータ(R0)のコピーがAligned領域に記憶されている状態である。図6(c)に示す不揮発性メモリ24の第6状態は、Aligned状態のリージョンデータ(R0)が記憶されている状態である。
LUTキャッシュ26cに記憶されている複製LUTは適宜なタイミングに不揮発性メモリ24へ送信され、不揮発性メモリ24に記憶される。これを複製LUTの不揮発化と呼ぶ。適宜なタイミングは、例えば記憶装置20の電源がオフされる直前でもよいし、一定期間毎でもよいし、LUTキャッシュ26cに記憶される複製LUTのサイズが一定サイズを超えるタイミングでもよい。
複製LUTの不揮発化の際、LUTキャッシュ26cにPacked状態で記憶されているリージョンデータは、不揮発性メモリ24へ送信される前に、Aligned状態のリージョンデータに変換される。リージョンデータが不揮発性メモリ24に記憶される際は、Aligned状態で記憶される。
複製LUTの不揮発化の一例を説明する。図7は、本発明の実施形態に係るアドレス変換テーブルの不揮発化処理の一例を示すフローチャートである。
不揮発化処理の実行タイミングになると(スタート)、CPU32は、不揮発化する1つのリージョンデータを、複製LUTから指定する(S102)。不揮発化処理の実行タイミングとは、例えば記憶装置20の電源がオフされる直前、LUTキャッシュ26cに記憶される複製LUTのサイズが一定サイズを超えるタイミング、又は前回の不揮発化処理の実行タイミングから一定期間が経過するタイミング、である。
不揮発化する1つのリージョンデータを指定した後、CPU32は、LUT制御部32cを使って、指定したリージョンデータを含むPacked領域のECCフレームをLUTキャッシュ26cから読み出す(S104)。S104において、指定されたリージョンデータを含むPacked領域のECCフレームは複数である場合もある。ECCフレームをLUTキャッシュ26cから読み出した後、CPU32は、読み出したECCフレームをECCエンコーダ/デコーダ40へ送信する(S106)。
CPU32が送信したECCフレームを受信すると、ECCエンコーダ/デコーダ40は、受信したECCフレームを復号し、リージョンデータを取り出す(S108)。
リージョンデータを取り出した後、ECCエンコーダ/デコーダ40は、取り出したリージョンデータを符号化し、ECCフレームを構成する(S110)。ECCエンコーダ/デコーダ40は、構成したECCフレームをCPU32へ送信する(S111)。
CPU32は、受信したECCフレームをLUTキャッシュ26cのAligned領域に記憶させる(S112)。CPU32は、LUTキャッシュ26cのAligned領域に記憶されているECCフレームを不揮発性メモリ24に記憶させる(S113)。これにより、一つのリージョンデータが不揮発化される。不揮発性メモリ24は、LUTの全リージョンデータを記憶するサイズのLUTエリアを備えており、送信されてきたAligned状態のECCフレームをLUTエリア内の空いているブロックにAligned状態のまま記憶する。
ECCフレームを不揮発性メモリ24に記憶させた後、CPU32は、不揮発化されたリージョンデータのトータルサイズに基づいて、複製LUTの全てのリージョンデータの不揮発化が完了したか否かを判定する(S114)。
複製LUTの全てのリージョンデータの不揮発化が完了していない場合(S114 NO)、CPU32は、不揮発化する他のリージョンデータを、複製LUTから指定し(S116)、S104以降の処理を繰り返す。
複製LUTの全てのリージョンデータの不揮発化が完了した場合(S114 YES)、CPU32は、処理を終了する(エンド)。
LUTキャッシュ26cにPacked領域を設けることで、LUTキャッシュ26cが全てAligned領域である場合に比べて、LUTキャッシュ26cが記憶できるリージョンデータの量を増やすことができる。また、LUTキャッシュ26cにAligned領域も設けることで、Aligned領域に記憶されているECCフレーム全体を、ECCデータが付いたまま複製LUTの不揮発化の対象とすることができる。
次に、不揮発性メモリ24に記憶されているLUTの一部分を複製LUTとしてLUTキャッシュ26cに記憶させる展開処理(LUTの揮発化処理とも称される)の一例を説明する。展開処理は、不揮発化処理と同様に、適宜なタイミング、例えば一定期間毎に行ってもよいし、ホスト10からリードコマンドやライトコマンドを受信した場合に行ってもよい。
図8(a)は、本願の実施形態に係るLUTの展開処理における不揮発性メモリ24内のLUTエリアの第7状態のデータ配置の一例を示す。図8(b)は、本願の実施形態に係るLUTの展開処理におけるLUTキャッシュ26cの第8状態のデータ配置の一例を示す。図8(c)は、本願の実施形態に係るLUTの展開処理におけるLUTキャッシュ26cの第9状態のデータ配置の一例を示す。図8(a)は、不揮発性メモリ24のアドレス空間におけるデータの配置を示す。図8(b)、(c)それぞれは、LUTキャッシュ26cのアドレス空間におけるデータの配置を示す。図8(a)、(b)、(c)それぞれの一番下の端はベースアドレスを示す。
例えば、不揮発性メモリ24のLUTエリアは、図8(a)に示すように、複数、すなわち、10個のECCフレームECC0~ECC9を有する。図8(a)において、リージョンデータは二つのECCフレームにAligned状態で記憶される。5個のリージョンデータR0~R4は10個のECCフレームECC0~ECC9に空き領域を残して記憶されている。空き領域に他のリージョンデータは記憶されていない。
図8(b)に示すLUTキャッシュ26cの第8状態は、リージョンデータ(R0、R1)がPacked領域に記憶されている状態である(ECC0b~ECC3b)。また、図8(b)に示すLUTキャッシュ26cの第8状態は、一つのリージョンデータ(R2)がAligned領域に記憶されている状態である(ECC4、ECC5)。
図8(c)に示すLUTキャッシュ26cの第9状態は、複数のリージョンデータ(R0~R2)がPacked領域に記憶されている状態である(ECC0b、ECC1b、ECC2b、ECC3b´、ECC4b、ECC5b)。また、図8(c)に示すLUTキャッシュ26cの第9状態は、リージョンデータR2がAligned領域に記憶されている状態である(ECC4、ECC5)。なお、Aligned領域のリージョンデータは、Packed領域に記憶された後、削除されてもよい。
リージョンデータがLUTキャッシュ26cのPacked領域に記憶される時、Packed領域のいずれかのECCフレーム(ここでは、ECC3b)が空き領域を有している場合(図8(b))と、全てのECCフレームが空き領域を有していない場合があり得る。
リージョンデータがLUTキャッシュ26cのPacked領域に記憶される結果、Packed領域の全てのECCフレームが空き領域を有していない場合の展開処理の一例を図9を参照して説明する。
図9(a)は、本願の実施形態に係るLUTの展開処理におけるLUTキャッシュ26cの第10状態のデータ配置の一例を示す。図9(a)に示すLUTキャッシュ26cの第10状態は、リージョンデータR1を含む複数のECCフレームECC2b~ECC3bがPacked領域に記憶されており、全てのECCフレームが空き領域を有していない状態である。
図9(b)は、本願の実施形態に係るLUTの展開処理におけるLUTキャッシュ26cの第11状態のデータ配置の一例を示す。
アドレス変換テーブルの展開処理の一例を説明する。図10A及び図10Bは、本発明の実施形態に係るアドレス変換テーブルの展開処理の一例として、リードコマンドを受信した場合の展開処理の一例を示す。
リードコマンドを受信すると(スタート)、CPU32は、リードコマンドから論理アドレスを取り出す(S201)。論理アドレスを取り出した後、CPU32は、LUT制御部32cを使って、S201で取り出した論理アドレスと一致する論理アドレスに対応するエントリがLUTキャッシュ26c内にあるか否かを判定する(S202)。
S201で取り出した論理アドレスと一致する論理アドレスに対応するエントリがLUTキャッシュ26c内にある場合(S202 YES)、CPU32は、LUT制御部32cを使って、S201で取り出した論理アドレスに関して複製LUTを用いてアドレス変換を実行し、物理アドレスを得る(S204)。物理アドレスを得た後、CPU32は、リード制御部32aを使って、物理アドレスが指す、不揮発性メモリ24における物理的なデータの記憶位置からデータを読み出す(S205)。この後、処理は終了する(エンド)。
S201で取り出した論理アドレスと一致する論理アドレスに対応するエントリがLUTキャッシュ26c内にない場合(S202 NO)、CPU32は、不揮発性メモリ24内のLUTの内、S201で取り出した論理アドレスと一致する論理アドレスに対応するエントリを含むリージョンデータを特定する(S206)。リージョンデータを特定した後、CPU32は、リード制御部32aを使って、特定したリージョンデータを含むECCフレームを不揮発性メモリ24から読み出す(S207)。ECCフレームを不揮発性メモリ24から読み出した後、CPU32は、読み出したECCフレームをLUTキャッシュ26cのAligned領域へ記憶させる(S208)。
読み出したECCフレームをLUTキャッシュ26cのAligned領域へ記憶させた後、CPU32は、LUTキャッシュ26c上の移動先ECCフレームに、他のリージョンデータが含まれているフレームがあるか否かを判定する(S212)。
LUTキャッシュ26c上の移動先ECCフレームに、他のリージョンデータが含まれているフレームがある場合(S212 YES)、CPU32は、LUT制御部32cを使って、LUTキャッシュ26cのAligned領域に記憶されているECCフレームを読み出す(S214)。加えて、CPU32は、LUT制御部32cを使って、LUTキャッシュ26cのPacked領域にある移動先ECCフレームのうち、他のリージョンデータが含まれているECCフレームを読み出す(S215)。
なお、LUTキャッシュ26c上の移動先ECCフレームに、他のリージョンデータが含まれているフレームが無い場合(S212 NO)、LUTキャッシュ26cから読み出されるECCフレームはS214で読み出されるECCフレームのみとなる。
CPU32は、読み出したECCフレームをECCエンコーダ/デコーダ40へ送信する(S216)。
ECCエンコーダ/デコーダ40は、CPU32が送信したECCフレームを受信すると、受信したECCフレームを復号して、リージョンデータを取り出す(S218)。
ECCエンコーダ/デコーダ40は、S215で読み出したECCフレームがある場合、フレーム内の更新対象領域のリージョンデータのみを書き換える(S219)。
リージョンデータを書き換えた後、ECCエンコーダ/デコーダ40は、リージョンデータを符号化し、Packed状態のECCフレームを構成する(S220)。ECCエンコーダ/デコーダ40は、構成したECCフレームをCPU32へ送信する(S221)。
CPU32は、受信したECCフレームをLUTキャッシュ26cのPacked領域に記憶させる(S222)。これにより、リードコマンドから取り出した論理アドレスと一致する論理アドレスを含むエントリを含む複製LUTがLUTキャッシュ26cに展開される。S222でECCフレームがLUTキャッシュ26cのPacked領域に記憶された後、CPU32は、S201で取り出した論理アドレスに関して複製LUTを用いてアドレス変換を実行し、物理アドレスを得る(S204)。物理アドレスを得た後、CPU32は、リード制御部32aを使って、物理アドレスが指す、不揮発性メモリ24における物理的なデータの記憶位置からデータを読み出す(S205)。この後、処理は終了する(エンド)。
LUTキャッシュ26c上の移動先ECCフレームに、他のリージョンデータが含まれているフレームが無い場合(S212 NO)、CPU32は、LUT制御部32cを使って、属性情報に基づいて、LUTキャッシュ26cのAligned領域に記憶されている、最後に参照された時刻が最も古いリージョンデータを含むECCフレームを削除する(S223)。ECCフレームを削除した後は、S214の処理に進む。LUT制御部32cは、LUTの属性情報として、各リージョンが参照された時刻を管理している。
上記はリードコマンドの受信時に展開処理を行う例を示したが、一定期間毎に展開処理を行う場合は、CPU32は、展開するリージョンデータを指定し、指定したリージョンデータを含む複数のECCフレームを不揮発性メモリ24から読み出し、LUTキャッシュ26cのAligned領域へ記憶させる。その後、図10BのS212以降の処理を実行する。
LUTキャッシュ26cにAligned領域を設けているので、Aligned状態で不揮発性メモリ24に記憶されているECCフレームを揮発性メモリ26にそのまま送信できる。
図11は、Aligned状態とPacked状態でLUTキャッシュ26cに記憶される複製LUTのデータサイズの例をドライブ容量毎に比較して示す。なお、比較のために、Unpacking状態で記憶される場合のデータサイズも記載する。上述の説明では、複数エントリが1リージョンとされ、LUTデータはリージョン単位で管理されるが、Unpacking状態では、リージョンの概念が無く、LUTデータはエントリ単位で管理される。1エントリは4KBとする。いずれのケースでも、LUTサイズはECCデータも含む。
Unpacking状態では、ドライブ容量が16TB、64TBの場合、LUTサイズはドライブ容量の1/1000を超えており、Aligned状態とPacked状態では、ドライブ容量が64TBの場合、LUTサイズはドライブ容量の1/1000を超えているが、ドライブ容量が16TBの場合、LUT容量はドライブ容量の1/1000を超えていない。しかし、Unpacking状態に比べてAligned状態ではLUTサイズが削減され、Aligned状態に比べてPacked状態ではLUTサイズがさらに削減されている。
一方、揮発性メモリ26にはドライブ容量に因らない複製LUT以外のユーザデータも保持される。従って、小容量ドライブでは搭載DRAM容量に対するユーザデータの比率が増してしまうため、LUTデータに利用できるDRAMの割合が減少してしまう。そのため、フットプリント削減効果は小容量ドライブにおいて効果が大きい。
Packed状態は一番効率の良い記憶方法ではあるものの、Aligned状態でもフットプリントを大きく削減することが可能である。しかし、データの扱いコストはAligned状態の方が安いので、LUTキャッシュ26cのAligned領域のサイズは、フットプリントとデータの扱いコストを考慮して決定してもよい。
本実施形態の処理はコンピュータプログラムによって実現することができるので、このコンピュータプログラムを記憶したコンピュータ読み取り可能な記憶媒体を通じてこのコンピュータプログラムをコンピュータにインストールして実行するだけで、本実施形態と同様の効果を容易に実現することができる。
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
10…ホスト
20…記憶装置
22…コントローラ
24…不揮発性メモリ
26…揮発性メモリ
26a…ライトバッファ
26b…リードバッファ
26c…LUTキャッシュ
26d…一時領域
32…CPU
32a…リード制御部
32b…ライト制御部
32c…LUT制御部
34…ホスト I/F
36…NAND I/F
38…DRAM I/F
40…ECCエンコーダ/デコーダ
ECC0~ECC7…ECCフレーム領域
R0~R7…リージョンデータ領域

Claims (16)

  1. 不揮発性メモリと、
    揮発性メモリと、
    複数の論理アドレスにそれぞれ対応する複数のエントリに前記不揮発性メモリの複数の物理アドレスがそれぞれ記憶されるアドレス変換テーブルを用いて前記不揮発性メモリにアクセスするコントローラと、
    を具備する記憶装置であって、
    前記不揮発性メモリに書き込まれるデータと前記揮発性メモリに書き込まれるデータは符号化され、符号化フレームとして前記不揮発性メモリと前記揮発性メモリに書き込まれ、
    前記アドレス変換テーブルの所定数の前記エントリはリージョンを構成し、
    前記アドレス変換テーブルは、複数のリージョンに関するデータの先頭アドレスが複数の符号化フレームの先頭アドレスと一致する第2状態で前記不揮発性メモリに記憶され、
    前記アドレス変換テーブルの少なくとも一部は、前記第2状態又は少なくとも一つのリージョンに関するデータの先頭アドレスが少なくとも一つの符号化フレームの先頭アドレスと一致せず、前記複数の符号化フレームの間に空き領域が生じない第1状態で前記揮発性メモリにも記憶される記憶装置。
  2. 前記コントローラは、
    前記少なくとも一つのリージョンに関する前記データを含む符号化フレームを前記不揮発性メモリから前記揮発性メモリへ前記第2状態で送信し、
    前記少なくとも一つのリージョンに関する前記データを含む符号化フレームを前記揮発性メモリから前記不揮発性メモリへ前記第2状態で送信する請求項1記載の記憶装置。
  3. 前記コントローラは、
    前記不揮発性メモリから前記揮発性メモリへ前記第2状態で送信された前記少なくとも一つのリージョンに関する前記データを含む前記符号化フレームを前記第1状態で前記揮発性メモリに書き込む請求項2記載の記憶装置。
  4. 前記コントローラは、
    第1論理アドレスを含むライトコマンドを受信すると、前記第1論理アドレスを前記不揮発性メモリの第1物理アドレスに対応させ、前記第1論理アドレスと前記第1物理アドレスが対応することを示す前記アドレス変換テーブルの第1リージョンに関するデータを生成し、
    生成した前記データを符号化して得られた前記第1リージョンに関する第1符号化フレームを前記揮発性メモリの第1領域に前記第1状態で書き込む、又は前記第1符号化フレームを前記揮発性メモリの第2領域に前記第2状態で書き込み、前記第2状態で書き込まれた前記第1リージョンに関する前記第1符号化フレームを前記揮発性メモリの前記第1領域に前記第1状態で書き込む請求項1記載の記憶装置。
  5. 前記コントローラは、
    前記第1符号化フレームを前記揮発性メモリから読み出し、
    読み出した前記第1符号化フレームを復号し、前記第1リージョンに関する前記データを取り出し
    取り出した前記データを符号化して得られた前記第1リージョンに関する第2符号化フレームを前記第2状態で前記不揮発性メモリに送信する請求項4記載の記憶装置。
  6. 前記コントローラは、
    前記不揮発性メモリから第1リージョンに関する第1符号化フレームを読み出し、
    読み出した前記第1符号化フレームを復号し、前記第1リージョンに関する第1データを取り出し
    前記揮発性メモリから第2リージョンに関する第2符号化フレームを読み出し、
    読み出した前記第2符号化フレームを復号し、前記第2リージョンに関する第2データを取り出し
    取り出した前記第1データと前記第2データを符号化して得られた前記第1リージョンに関する第3符号化フレームを前記揮発性メモリへ前記第2状態で送信する請求項1記載の記憶装置。
  7. 前記コントローラは、
    前記揮発性メモリへ前記第2状態で送信された前記第3符号化フレームを前記第1状態で前記揮発性メモリに書き込む請求項6記載の記憶装置。
  8. 一つのリージョンに関するデータのサイズは一つの符号化フレームのサイズより大きい請求項1乃至請求項7のいずれか一項記載の記憶装置。
  9. 不揮発性メモリと、
    揮発性メモリと、
    複数の論理アドレスにそれぞれ対応する複数のエントリに前記不揮発性メモリの複数の物理アドレスがそれぞれ記憶されるアドレス変換テーブルを用いて前記不揮発性メモリにアクセスするコントローラと、
    を具備し、
    前記不揮発性メモリに書き込まれるデータと前記揮発性メモリに書き込まれるデータは符号化され、符号化フレームとして前記不揮発性メモリと前記揮発性メモリに書き込まれ、
    前記アドレス変換テーブルの所定数の前記エントリはリージョンを構成する記憶装置の記憶方法であって、
    前記アドレス変換テーブルを、複数のリージョンに関するデータの先頭アドレスが複数の符号化フレームの先頭アドレスと一致する第2状態で前記不揮発性メモリに記憶することと、
    前記アドレス変換テーブルの少なくとも一部を、前記第2状態又は少なくとも一つのリージョンに関するデータの先頭アドレスが少なくとも一つの符号化フレームの先頭アドレス一致せず、前記複数の符号化フレームの間に空き領域が生じない第1状態で前記揮発性メモリにも記憶することと、
    を具備する記憶方法。
  10. 前記少なくとも一つのリージョンに関する前記データを含む符号化フレームを前記不揮発性メモリから前記揮発性メモリへ前記第2状態で送信することと、
    前記少なくとも一つのリージョンに関する前記データを含む符号化フレームを前記揮発性メモリから前記不揮発性メモリへ前記第2状態で送信することと、
    をさらに具備する請求項9記載の記憶方法。
  11. 前記不揮発性メモリから前記揮発性メモリへ前記第2状態で送信された前記少なくとも一つのリージョンに関する前記データを含む前記符号化フレームを前記第1状態で前記揮発性メモリに書き込むことをさらに具備する請求項10記載の記憶方法。
  12. 第1論理アドレスを含むライトコマンドを受信すると、前記第1論理アドレスを前記不揮発性メモリの第1物理アドレスに対応させ、前記第1論理アドレスと前記第1物理アドレスが対応することを示す前記アドレス変換テーブルの第1リージョンに関するデータを生成することと、
    生成した前記データを符号化して得られた前記第1リージョンに関する第1符号化フレームを前記揮発性メモリの第1領域に前記第1状態で書き込む、又は前記第1符号化フレームを前記揮発性メモリの第2領域に前記第2状態で書き込み、前記第2状態で書き込まれた前記第1リージョンに関する前記第1符号化フレームを前記揮発性メモリの前記第1領域に前記第1状態で書き込むことと、
    をさらに具備する請求項9記載の記憶方法。
  13. 前記第1符号化フレームを前記揮発性メモリから読み出すことと、
    読み出した前記第1符号化フレームを復号し、前記第1リージョンに関する前記データを取り出すことと、
    取り出した前記データを符号化して得られた前記第1リージョンに関する第2符号化フレームを前記第2状態で前記不揮発性メモリへ送信することと、
    をさらに具備する請求項12記載の記憶方法。
  14. 前記不揮発性メモリから第1リージョンに関する第1符号化フレームを読み出すことと、
    読み出した前記第1符号化フレームを復号し、前記第1リージョンに関する第1データを取り出すことと、
    前記揮発性メモリから第2リージョンに関する第2符号化フレームを読み出すことと、
    読み出した前記第2符号化フレームを復号し、前記第2リージョンに関する第2データを取り出すことと、
    取り出した前記第1データと前記第2データを符号化して得られた前記第1リージョンに関する第3符号化フレームを前記揮発性メモリへ前記第2状態で送信することと、
    をさらに具備する請求項9記載の記憶方法。
  15. 前記揮発性メモリへ前記第2状態で送信された前記第3符号化フレームを前記第1状態で前記揮発性メモリに書き込むことをさらに具備する請求項14記載の記憶方法。
  16. 一つのリージョンに関するデータのサイズは一つの符号フレームのサイズより大きい請求項9乃至請求項15のいずれか一項記載の記憶方法。
JP2020050893A 2020-03-23 2020-03-23 記憶装置及び記憶方法 Active JP7408449B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2020050893A JP7408449B2 (ja) 2020-03-23 2020-03-23 記憶装置及び記憶方法
US17/009,694 US11531616B2 (en) 2020-03-23 2020-09-01 Storage device and storage method for caching address conversion table
US18/084,407 US11853208B2 (en) 2020-03-23 2022-12-19 Storage device and storage method for caching address conversion table

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020050893A JP7408449B2 (ja) 2020-03-23 2020-03-23 記憶装置及び記憶方法

Publications (2)

Publication Number Publication Date
JP2021149768A JP2021149768A (ja) 2021-09-27
JP7408449B2 true JP7408449B2 (ja) 2024-01-05

Family

ID=77747903

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020050893A Active JP7408449B2 (ja) 2020-03-23 2020-03-23 記憶装置及び記憶方法

Country Status (2)

Country Link
US (2) US11531616B2 (ja)
JP (1) JP7408449B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2023024008A (ja) * 2021-08-06 2023-02-16 キオクシア株式会社 メモリシステム

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001142774A (ja) 1999-11-11 2001-05-25 Toshiba Corp メモリカード及び同カードに適用されるアドレス変換方法
JP2013152676A (ja) 2012-01-26 2013-08-08 Hitachi Ltd 不揮発性記憶装置
JP2014523032A (ja) 2011-07-01 2014-09-08 マイクロン テクノロジー, インク. アライメントされていないデータの結合
JP2014238769A (ja) 2013-06-10 2014-12-18 オリンパス株式会社 データ処理装置およびデータ転送制御装置
JP2016224708A (ja) 2015-05-29 2016-12-28 株式会社東芝 メモリシステム
US20190163620A1 (en) 2017-11-27 2019-05-30 Western Digital Technologies, Inc. Handling of unaligned writes

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7653779B1 (en) 2009-02-04 2010-01-26 Gene Fein Memory storage using a look-up table
US9063561B2 (en) 2009-05-06 2015-06-23 Avago Technologies General Ip (Singapore) Pte. Ltd. Direct memory access for loopback transfers in a media controller architecture
JP2012094132A (ja) 2010-10-01 2012-05-17 Siglead Inc 不揮発性半導体メモリ装置とデータ誤り訂正方法
TWI459197B (zh) * 2011-04-21 2014-11-01 Phison Electronics Corp 資料寫入方法、記憶體控制器與記憶體儲存裝置
JP2013232097A (ja) * 2012-04-27 2013-11-14 Toshiba Corp 半導体記憶装置
US9507523B1 (en) * 2012-10-12 2016-11-29 Western Digital Technologies, Inc. Methods, devices and systems for variable size logical page management in a solid state drive
US10430330B2 (en) * 2017-10-18 2019-10-01 Western Digital Technologies, Inc. Handling of unaligned sequential writes

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001142774A (ja) 1999-11-11 2001-05-25 Toshiba Corp メモリカード及び同カードに適用されるアドレス変換方法
JP2014523032A (ja) 2011-07-01 2014-09-08 マイクロン テクノロジー, インク. アライメントされていないデータの結合
JP2013152676A (ja) 2012-01-26 2013-08-08 Hitachi Ltd 不揮発性記憶装置
JP2014238769A (ja) 2013-06-10 2014-12-18 オリンパス株式会社 データ処理装置およびデータ転送制御装置
JP2016224708A (ja) 2015-05-29 2016-12-28 株式会社東芝 メモリシステム
US20190163620A1 (en) 2017-11-27 2019-05-30 Western Digital Technologies, Inc. Handling of unaligned writes

Also Published As

Publication number Publication date
US11531616B2 (en) 2022-12-20
US20230122919A1 (en) 2023-04-20
US11853208B2 (en) 2023-12-26
JP2021149768A (ja) 2021-09-27
US20210294740A1 (en) 2021-09-23

Similar Documents

Publication Publication Date Title
US11301369B2 (en) Logical to physical mapping management using low-latency non-volatile memory
CN112433956B (zh) 逻辑到物理表高速缓存中基于顺序写入的分区
US10725930B2 (en) Logical to physical memory address mapping tree
TWI696915B (zh) 提高重建效率的記憶體系統和操作方法
KR101466585B1 (ko) 메모리 장치 및 메모리 장치의 관리 방법
US11397669B2 (en) Data storage device and non-volatile memory control method
CN108027764B (zh) 可转换的叶的存储器映射
US11947422B2 (en) Nonvolatile semiconductor memory device
US11232028B2 (en) Error-checking in namespaces on storage devices
TW201435587A (zh) 差異邏輯至實體方法
US11734112B2 (en) Memory system
CN114730300A (zh) 对区命名空间存储器的增强型文件系统支持
JP4253272B2 (ja) メモリカード、半導体装置、及び半導体メモリの制御方法
US11307979B2 (en) Data storage device and non-volatile memory control method
CN113031856A (zh) 存储器子系统中的断电数据保护
JP7408449B2 (ja) 記憶装置及び記憶方法
US20240070062A1 (en) Nonvolatile memory, memory system, and control method of nonvolatile memory
US20210074343A1 (en) Memory sub-system managing remapping for misaligned memory components
CN113590503A (zh) 一种非挥发性记忆体存储器的垃圾回收方法与垃圾回收系统
CN114270304A (zh) 存储器组件的同一平面内的数据压缩
KR101501717B1 (ko) 메모리 장치 및 메모리 장치의 관리 방법
TWI745987B (zh) 資料儲存裝置以及非揮發式記憶體控制方法
WO2022225603A1 (en) Memory instruction for memory tiers
CN112053735B (zh) 固态存储装置的重复数据处理方法
JP2012037971A (ja) メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220912

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230821

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230926

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20231107

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20231121

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20231220

R151 Written notification of patent or utility model registration

Ref document number: 7408449

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151