JP7362369B2 - メモリシステム - Google Patents

メモリシステム Download PDF

Info

Publication number
JP7362369B2
JP7362369B2 JP2019160660A JP2019160660A JP7362369B2 JP 7362369 B2 JP7362369 B2 JP 7362369B2 JP 2019160660 A JP2019160660 A JP 2019160660A JP 2019160660 A JP2019160660 A JP 2019160660A JP 7362369 B2 JP7362369 B2 JP 7362369B2
Authority
JP
Japan
Prior art keywords
memory
management information
information
ram
volatile
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
JP2019160660A
Other languages
English (en)
Other versions
JP2021039557A (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 JP2019160660A priority Critical patent/JP7362369B2/ja
Priority to US16/806,173 priority patent/US11609844B2/en
Publication of JP2021039557A publication Critical patent/JP2021039557A/ja
Application granted granted Critical
Publication of JP7362369B2 publication Critical patent/JP7362369B2/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/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data
    • 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/7209Validity control, e.g. using flags, time stamps or sequence numbers

Landscapes

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

Description

本実施形態は、メモリシステムに関する。
メモリシステムとして、NAND型のフラッシュメモリ(以降、NANDメモリ)を備えるSSD(Solid State Drive)が知られている。SSDのようなメモリシステムでは、実際にホストから受信したユーザデータの量よりも多い量のデータがNANDメモリに書き込まれる。ホストから受信したユーザデータの量に対する、実際にNANDメモリに書き込まれるデータの総量、の割合は、書き込み倍率(Write Amplification Factor : WAF)として知られている。NANDメモリの疲弊の進行速度を緩和するために、WAFを小さくする仕組みが要望される。
米国特許出願公開第2018/0239547号明細書
一つの実施形態は、書き込み倍率を抑制したメモリシステムを提供することを目的とする。
一つの実施形態によれば、メモリシステムは、不揮発性の第1メモリと、揮発性の第2メモリと、メモリコントローラと、を備える。メモリコントローラは、第2メモリに管理情報である第1情報を格納して、第2メモリに格納されている第1情報を使用する。メモリコントローラは、第1情報を圧縮器で圧縮して、圧縮された第1情報である第2情報を第1メモリに格納する。第1情報は、第1メモリ内の位置を示す物理アドレスと、ホストが指定する論理アドレスと、の対応関係を記録したテーブルである。テーブルは、複数の階層のテーブルに階層化され、複数の階層のテーブルは、第1の階層の第1テーブルと、第1の階層の下位の階層の第2の階層の第2テーブルと、を含む。メモリコントローラは、第2テーブルを圧縮して第1メモリに格納し、第1メモリ内の第2テーブルの格納位置を第1テーブルに記録する。メモリコントローラは、格納位置が記録された第1テーブルを圧縮して第1メモリに格納する。
図1は、実施形態のメモリシステムの構成例を示す模式的な図である。 図2は、各メモリチップ21の構成例を示す模式的な図である。 図3は、第1の実施形態の管理情報の一例を示す模式的な図である。 図4は、第1の実施形態の論物変換テーブル(logical - physical translation table)の構成を説明するための模式的な図である。 図5は、第1の実施形態のメモリシステムによって実行される、管理情報を復元する動作の一例を示すフローチャートである。 図6は、第1の実施形態のメモリシステムによって実行される、管理情報を不揮発化する動作の一例を示すフローチャートである。 図7は、第1の実施形態のメモリシステムの、圧縮のアルゴリズムまたは圧縮のためのパラメータが上位階層と下位階層とで異なる構成の一例を説明するための模式的な図である。 図8は、第2の実施形態の論物変換テーブルの構成を説明するための模式的な図である。 図9は、第2の実施形態のメモリシステムによって実行される、管理情報を復元する動作の一例を示すフローチャートである。 図10は、第2の実施形態のメモリシステムによって実行される、管理情報を不揮発化する動作の一例を示すフローチャートである。 図11は、第3の実施形態の論物変換テーブルの構成を説明するための模式的な図である。 図12は、第3の実施形態のメモリシステムによって実行される、管理情報を復元する動作の一例を示すフローチャートである。 図13は、第3の実施形態のメモリシステムによって実行される、管理情報を不揮発化する動作の一例を示すフローチャートである。
以下に添付図面を参照して、実施形態にかかるメモリシステムを詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
(第1の実施形態)
図1は、実施形態のメモリシステムの構成例を示す模式的な図である。メモリシステム1は、通信路を介してホスト2に接続される。ホスト2は、例えばコンピュータである。コンピュータとは、パーソナルコンピュータ、ポータブルコンピュータ、または、携帯通信機器などを含む。
メモリシステム1は、ホスト2の外部記憶装置として機能する。ホスト2は、メモリシステム1に対してアクセスコマンド(ライトコマンドおよびリードコマンド)を発行することができる。アクセスコマンドは、アクセス先の位置(location)を示す論理アドレスを含む。
論理アドレスは、メモリシステム1がホスト2に提供する論理アドレス空間内の位置を示す位置情報である。論理アドレス空間の所定の単位領域毎に論理アドレスがアサインされている。一例では、論理アドレス空間の各セクタに論理アドレスがアサインされている。論理アドレスのアサインの単位はセクタに限定されない。
メモリシステム1は、メモリコントローラ10と、ストレージとして用いられるNAND型のフラッシュメモリ(NANDメモリ)20と、とを備えている。なお、ストレージとして用いられるメモリの種類はNAND型のフラッシュメモリだけに限定されない。任意の種類の不揮発性メモリが、ストレージとして採用され得る。例えば、NOR型のフラッシュメモリ、ReRAM(Resistance Random Access Memory)、またはMRAM(Magnetoresistive Random Access Memory)などが採用可能である。
メモリコントローラ10は、ホスト2から、論理アドレスの指定を含むアクセスコマンドを受信する。そして、メモリコントローラ10は、受信したアクセスコマンドに応じて、ホスト2とNANDメモリ20との間のデータ転送を実行する。
NANDメモリ20は、1以上のメモリチップ21によって構成され得る。この例では、NANDメモリ20は、6つのメモリチップ21を備える。
図2は、各メモリチップ21の構成例を示す模式的な図である。各メモリチップ21は、夫々、アクセス回路22と、メモリセルアレイ23を備える。
アクセス回路22は、ロウデコーダ、カラムデコーダ、センスアンプ、電圧発生回路、シーケンサ、データバッファ、などを含む。アクセス回路22は、メモリセルアレイ23に対し、データのプログラム(書き込み)、データのリード、およびデータのイレースを実行することができる。
メモリセルアレイ23は、複数のメモリセルが2次元的にあるいは3次元的に配列された構成を有する。メモリセルアレイ23は、複数の物理ブロックを含む。物理ブロックは、メモリセルアレイ23に対するイレースの単位である。つまり、1つの物理ブロックに格納された全データは、一括にイレースされる。
各物理ブロックは、複数のページを備えている。各ページは、データのプログラムおよびデータのリードが実行される最小の単位である。
なお、メモリセルアレイ23は、それぞれは複数の物理ブロックを備えた複数の領域(Plane)に分割されていてもよい。複数の領域のそれぞれは、互いに独立した周辺回路(例えば、ロウデコーダ、カラムデコーダ等)を備えていることにより、複数の領域に対して同時にプログラム、リード、またはイレースを実行することが可能とされ得る。
また、それぞれ異なるメモリチップ21または異なるPlaneに属する複数の物理ブロックによって1つの論理ブロックが構成されてもよい。複数の論理ブロックが構成され、メモリコントローラ10は、各論理ブロックを構成する複数の物理ブロックに対して同時にプログラム、リード、またはイレースを実行してもよい。
以降、ブロックは、物理ブロックまたは論理ブロックをいうこととする。
図1に説明を戻す。メモリコントローラ10は、ホストインタフェース(Host I/F)11、プロセッサ12、圧縮・伸張エンジン(compression-decompression engine)13、フラッシュインタフェース(Flash I/F)14、第1RAM(Random Access Memory)15、第2RAM16、およびバス17を備える。メモリコントローラ10は、ホストI/F11、プロセッサ12、圧縮・伸張エンジン13、フラッシュI/F14、第1RAM15、および第2RAM16は、バス17に電気的に接続されている。
メモリコントローラ10は、SoC(System-On-a-Chip)として構成され得る。メモリコントローラ10は、複数のチップによって構成されてもよい。第1RAM15および第2RAM16の一方または両方は、メモリコントローラ10とは別のチップとして構成されてもよい。
ホストI/F11は、ホスト2に対する通信の制御を実行する。また、ホストI/F11は、ホスト2からのアクセスコマンドを受け付ける。
フラッシュI/F14は、NANDメモリ20に対し、データの送受信を実行する。
フラッシュI/F14は、ECC回路(Error Checking and Correction circuit : ECC)18を備える。ECC18は、NANDメモリ20に送られるデータ、つまりメモリセルアレイ23にプログラムされるデータに対し、誤り訂正のための符号化を実行することができる。また、ECC18は、NANDメモリ20から読み出されたデータに対し、誤り訂正のための復号化を実行することができる。
なお、ECC18の符号化方式としては、任意の符号化方式が採用され得る。例えば、LDPC(Low-Density Parity-Check code)などの、符号レート(code rate)を変更可能な方式が、ECC18による誤り訂正のための符号化方式として採用され得る。符号レートは、符号化後のデータのサイズに対する符号化前のデータのサイズのレートである。符号レートが小さいほど、誤り訂正の能力が強い。なお、符号レートが固定の符号化方式がECC18の符号化方式として採用されてもよい。
プロセッサ12は、例えばCPU(Central Processing Unit)である。プロセッサ12は、ファームウェアプログラムを実行することにより、メモリコントローラ10全体の制御を実行する。ファームウェアプログラムは、例えばNANDメモリ20などの不揮発性メモリに予め格納されており、プロセッサ12は、当該ファームウェアプログラムを実行する。プロセッサ12は、第1RAM15などの揮発性メモリをワークエリアとして使用してもよい。
なお、プロセッサ12が実行する制御の機能のうちの一部または全部は、FPGA(field-programmable gate array)、ASIC(application specific integrated circuit)、または任意の論理回路によって実現されてもよい。また、プロセッサ12が誤り訂正のための符号化または復号化を実行してもよい。
第1RAM15は、管理情報が格納される揮発性メモリである。プロセッサ12は、第1RAM15に格納されている管理情報を使用することができる。使用するとは、参照することおよび更新することを含む。
なお、管理情報が格納される揮発性メモリとしては、任意の種類の揮発性メモリが採用され得る。例えば、SRAM(Static Rancom Access Memory)、DRAM(Dynamic Random Access Memory)、またはこれらの組み合わせが、管理情報が格納される揮発性メモリとして採用され得る。
図3は、第1の実施形態の管理情報の一例を示す模式的な図である。本図に示されるように、管理情報30は、例えば、論物変換テーブル31を含み得る。論物変換テーブル31は、論理アドレスと、NANDメモリ20内の位置を示す物理アドレスと、の対応関係を記録した情報である。論物変換テーブル31の構成例については後述する。
また、管理情報30は、論物変換テーブル31の他に、ブロック毎にカウントされたP(プログラム)/E(イレース)サイクルの実行回数32を含み得る。プログラムとイレースとのサイクルの実行回数に応じて、メモリセルの疲弊(劣化)が進行する。メモリコントローラ10は、一部のブロックが突出して疲弊しないように、P/Eサイクルの実行回数をブロック間でできるだけ均等にする制御を行う。この制御は、ウェアレベリングと称され得る。メモリコントローラ10は、管理情報30として保持されているP/Eサイクルの実行回数32を、ウェアレベリングに供することができる。
また、管理情報30は、ブロック毎にカウントされた有効(または無効)なデータの量33を含み得る。
例えば、NANDメモリ20に第1のユーザデータが格納されている状態でホスト2から第1のユーザデータと同一の論理アドレスを指定して第2のユーザデータが送られてきた場合、メモリコントローラ10は、空のページを有するブロックに第2のユーザデータをプログラムする。そして、メモリコントローラ10は、既にNANDメモリ20に格納されている第1のユーザデータを無効なユーザデータとして管理する。「空の」状態とは、ここでは、無効なデータおよび有効なデータの何れも記憶されていない状態をいう。
このような手法でNANDメモリ20に対するプログラムが行われるため、各ブロックには、無効なユーザデータと有効なユーザデータとが記憶される。データが有効とは、そのデータが最新の状態であることをいう。同一の論理アドレスが指定された複数のユーザデータがNANDメモリ20に格納される場合において、最新の状態とは、その複数のユーザデータのうちのホスト2が最後にメモリシステム1に送ったユーザデータの状態をいう。無効なデータとは、前記複数のユーザデータのうちの、ホスト2が最後にメモリシステム1に送ったユーザデータ以外のユーザデータをいう。
メモリコントローラ10は、ブロック毎にカウントされた有効(または無効)なデータの量33に基づいてガベージコレクションを実行することができる。
ガベージコレクションは、あるブロック(第1のブロックと表記する)に格納されたデータのうち、有効なデータを他のブロック(第2のブロックと表記する)にコピーし、その後、第1のブロックに格納されている全てのデータを無効と見なす処理である。ガベージコレクションによって、第1のブロックは、フリーブロックとなる。
メモリコントローラ10は、管理情報30としてブロック毎に記録されている有効(または無効)なデータの量33に基づき、格納されている有効なデータの量が少ないブロック(換言すると、格納されている無効なデータの量が多いブロック)を、ガベージコレクションの対象のブロック、つまり、有効なデータのコピー元のブロックとして選択することができる。格納されている有効(または無効)なデータの量が少ないブロックがガベージコレクションの対象として選択されることで、ガベージコレクションの効率を向上させることができる。
なお、フリーブロックは、イレースが実行された後、新たなデータのプログラムが可能な状態となる。
また、管理情報30は、ブロック毎の符号レートの設定値34を含み得る。メモリセルの疲弊の進行に応じて、そのメモリセルのしきい値電圧が変動しやすくなる。つまり、ビットエラーが発生しやすくなる。よって、符号レートが可変の符号化方式(例えばLDPC)が採用された場合、メモリコントローラ10は、P/Eサイクルの実行回数の増加に応じて符号レートを小さくすることが考えられる。つまり、メモリコントローラ10は、メモリセルの疲弊の進行に応じて、誤り訂正の能力を強める。メモリコントローラ10は、ブロック毎にP/Eサイクルの実行回数に応じて符号レートを決定し、ブロック毎の符号レートの設定値34を管理情報30として保持する。ECC18は、ブロック毎の符号レートの設定値34を適用して符号化を実行する。
なお、符号レートの設定方法は上記に限定されない。また、符号レートの管理の粒度は、ブロック単位でなくてもよい。例えば、物理ページ単位で符号レートが管理されてもよい。
また、管理情報30は、ブロック毎のリードレベルの設定値35を含み得る。
メモリセルのしきい値電圧は、データのプログラムの際に、複数のステートのうちのデータに応じたステートに設定される。データのリードの際には、ステートの境界に対応した電圧値と、しきい値電圧と、が比較されることで、しきい値電圧が属するステートに対応したデータが取得される。リードレベルは、しきい値電圧と比較される電圧値である。
ここで、しきい値電圧は、種々の要因により変動し得る。ECC18による誤り訂正が困難になるほどしきい値電圧が変動した場合には、リードレベルを変更してリードが再実行される。リードレベルを変更してリードを再実行する処理は、リトライリードと称され得る。
メモリコントローラ10は、リトライリードを実行した場合、変更後のリードレベルの設定値を管理情報30として保持しておくことができる。メモリコントローラ10は、リードを再び行う場合、管理情報30として保持しておいたリードレベルの設定値35を使用することで、リトライリードを再び行うことなくデータを取得することが可能になる。
なお、リードレベルの管理の粒度は、ブロック単位でなくてもよい。例えば、物理ページ単位でリードレベルが管理されてもよい。
また、管理情報30は、フリーブロックのリスト36を含み得る。メモリコントローラ10は、フリーブロックのリスト36から、ユーザデータの書き込み先とするブロックやガベージコレクションにおける有効なデータの移動先とするブロックを選択することができる。
管理情報30に含まれる情報は、以上に述べた情報に限定されない。管理情報30は、以上述べた情報の一部または全部に替えて、任意の種類の情報を含み得る。
前述したように、第1RAM15は揮発性メモリである。よって、第1RAM15への電力の供給が遮断されると、第1RAM15に格納されている管理情報30は第1RAM15から消失する。メモリコントローラ10は、電源断などによって第1RAM15への電力の供給が遮断されても管理情報30がメモリシステム1から失われないように、第1RAM15に格納されている管理情報30を所定のタイミングでNANDメモリ20に書き込む。これによって、管理情報30は不揮発化される。
P/Eサイクルの実行回数などに応じてNANDメモリ20の疲弊が進行する。そして、P/Eサイクルの実行回数は、NANDメモリ20に書き込まれるデータの量と相関する。つまり、NANDメモリ20に書き込まれるデータの量が多くなるにつれてNANDメモリ20の疲弊が進行する。
したがって、NANDメモリ20に書き込まれる管理情報30の量を減らすことができれば、NANDメモリ20に書き込むユーザデータの量を変えることなく、実際にNANDメモリに書き込まれるデータの総量を減らすことができる。つまりWAFを小さくすることができる。これによって、NANDメモリ20の疲弊の進行速度を緩和することができる。
本実施形態では、第1RAM15内の管理情報30は、圧縮された後にNANDメモリ20に格納される。これによって、NANDメモリ20に書き込まれる管理情報30の量(サイズ)を減らし、WAFを小さくする。
なお、管理情報30の全てが必ずしも圧縮されなくてもよい。管理情報30のうちの一部が圧縮されてNANDメモリ20に格納され、管理情報30のうちの他の一部が圧縮されないでNANDメモリ20に格納されてもよい。
第1の実施形態では、一例として、管理情報30は論物変換テーブルを含み、当該論物変換テーブルが圧縮されることとして説明する。以降、第1RAM15内の管理情報30を圧縮してまたは圧縮しないでNANDメモリ20に格納することを、管理情報30を不揮発化する、と表記することがある。
再び図1に説明を戻す。圧縮・伸張エンジン13は、管理情報30の圧縮および伸張を実行する回路である。なお、圧縮・伸張エンジン13は、圧縮器の一例であり、伸張器の一例でもある。圧縮・伸張エンジン13は、圧縮を実行する回路(圧縮器に相当)と、伸張を実行する回路(伸張器に相当)と、の合計2つの回路によって構成されてもよい。
圧縮・伸張エンジン13による圧縮(および伸張)のアルゴリズムとしては、可逆圧縮のアルゴリズムである限り、任意のアルゴリズムが採用され得る。例えば、圧縮・伸張エンジン13は、差分符号化、辞書式符号化、またはハフマン符号化、などを行うことができる。
第2RAM16は、圧縮された状態の管理情報30が一時的に格納される揮発性メモリである。圧縮・伸張エンジン13は、第1RAM15に格納されている管理情報30を圧縮し、圧縮された管理情報30を第2RAM16に格納する。第2RAM16に格納された圧縮された状態の管理情報30は、フラッシュI/F14によってNANDメモリ20に格納される。
また、第2RAM16は、NANDメモリ20から読み出された圧縮された状態の管理情報30が格納される。圧縮・伸張エンジン13は、第2RAM16に格納された圧縮された状態の管理情報30を伸張して、圧縮されていない状態の管理情報30に復元し、復元された管理情報30を第1RAM15に格納する。
なお、圧縮された状態の管理情報30が一時的に格納される揮発性メモリとしては、任意の種類の揮発性メモリが採用され得る。例えば、SRAM、DRAM、またはこれらの組み合わせが、圧縮された状態の管理情報30が一時的に格納される揮発性メモリとして採用され得る。
図4は、第1の実施形態の論物変換テーブルの構成を説明するための模式的な図である。
第1RAM15内の管理情報30に含まれている論物変換テーブル31は、上位階層のテーブル31Uと、下位階層のテーブル31Lの群と、の2つの階層に階層化されている。実施形態では、論理アドレス空間は、所定のサイズ毎に分割され、論物変換テーブル31は、分割によって生成されたサブ空間毎に1つのテーブル31Lを備えている。サブ空間は、本明細書では、セグメントと表記される。
各テーブル31Lには、対応するセグメント内の連続する複数の論理アドレスのそれぞれに対応する物理アドレスが、論理アドレス順に記録されている。つまり、各テーブル31Lは、物理アドレス列が記録されたルックアップテーブルのデータ構成を有している。
テーブル31Uは、セグメントと、テーブル31Lの位置と、の対応関係を示している。具体的には、テーブル31Uは、3つのフィールドを備えている。
1つ目のフィールドには、セグメントインデックス、つまりセグメントの識別情報が記録される。例えば、サブ空間が、連続する64個の論理アドレスによって示される領域で構成される場合、セグメントの識別情報は、そのセグメント内の任意の論理アドレスを6回、右にシフトすることで得られる。
3つ目のフィールドには、第1RAM15内に格納されているテーブル31Lの位置を示すポインタが記録される。これによって、セグメントとテーブル31Lとが対応付けられる。
2つ目のフィールドには、NANDメモリ20内のテーブル31L(テーブル51L)の位置を示す物理アドレスが記録される。何れかのテーブル31Lの不揮発化が実行された場合、対応するエントリの2つ目のフィールドには、当該テーブル31Lの不揮発化先の位置、つまり圧縮された状態の当該テーブル31L(テーブル51L)が不揮発化によって書き込まれた位置、を示す物理アドレスが上書き形式で記録される。
なお、テーブル31Uの各エントリがセグメントインデックス順に配列される場合には、テーブル31Uの先頭からの各エントリまでのオフセットが各エントリのセグメントインデックスと静的に対応するので、1つ目のフィールドは省略され得る。
NANDメモリ20には、任意の数の管理情報50が格納される。各管理情報50は、それぞれ異なるタイミングで不揮発化された管理情報30である。
管理情報50は、論物変換テーブル51を含む。論物変換テーブル51は、圧縮された状態のテーブル31Uであるテーブル51Uと、圧縮された状態の各テーブル31Lである各テーブル51Lと、を含む。テーブル31Uおよび各テーブル31Lは、圧縮された状態で不揮発化されるので、テーブル31Uおよび各テーブル31Lが圧縮されていない状態で不揮発化される場合に比べて、不揮発化によってNANDメモリ20に書き込まれるデータの量が低減される。つまり、WAFを抑制することができる。
なお、テーブル31Uの各エントリが、セグメントインデックス順に配列されている場合、テーブル31Uの1つ目のフィールドの情報は不要である。また、電源断など、第1RAM15への電力の供給が遮断されるケースでは、第1RAM15の内容は消失するので、電源断を想定した不揮発化の処理では、テーブル31Uの3つ目のフィールドの情報も不要である。よって、テーブル51Uは、ここでは、テーブル31Uのうちの2つ目のフィールドの内容(符号37の部分)のみを圧縮して得られたものとする。
続いて、第1の実施形態のメモリシステム1の動作を説明する。
パワーオンされた場合、つまりメモリシステム1への電力の供給が開始された場合、メモリシステム1は、最後にNANDメモリ20に不揮発化した管理情報50に基づいて、第1RAM15内の管理情報30を復元する。
図5は、第1の実施形態のメモリシステム1によって実行される、管理情報30を復元する動作の一例を示すフローチャートである。ここでは管理情報30の一例として、論物変換テーブル31を復元する動作について説明する。
まず、パワーオンが行われることで(S101)、メモリシステム1の各構成要素への電力の供給が開始される。すると、プロセッサ12は、フラッシュI/F14を制御することで、NANDメモリ20内のテーブル51Uを読み出して当該テーブル51Uを第2RAM16に格納する(S102)。続いて、プロセッサ12は、圧縮・伸張エンジン13を制御することで、第2RAM16内のテーブル51Uを伸張して圧縮前の状態に復元されたテーブル31Uを第1RAM15に格納する(S103)。
続いて、プロセッサ12は、フラッシュI/F14を制御することで、NANDメモリ20内の各テーブル51Lを読み出して当該テーブル51Lを第2RAM16に格納する(S104)。S104の処理においては、プロセッサ12は、S103の処理によって第1RAM15に格納されたテーブル31Uの2つ目のフィールドを参照することによって、各テーブル51LのNANDメモリ20内の位置を特定することができる。そして、プロセッサ12は、特定した各位置を、対応するテーブル51Lの読み出し元としてフラッシュI/F14に通知する。
続いて、プロセッサ12は、圧縮・伸張エンジン13を制御することで、第2RAM16内の各テーブル51Lを伸張して圧縮前の状態に復元された各テーブル31Lを第1RAM15に格納する(S105)。
なお、一般に、下位階層のテーブルの群(例えばテーブル31Lの群)のサイズは非常に大きくなる傾向がある。従って、第2RAM16には、全てのテーブル51Lを一度に格納することができない場合がある。そのような場合には、プロセッサ12は、少数のテーブル51L毎にS104およびS105を行ってもよい。
テーブル31Lの第1RAM15内の格納先が確定すると、プロセッサ12は、対応するエントリの3つ目のフィールドに、当該テーブル31Lの第1RAM15内の格納先を示すポインタを記録する(S106)。
なお、テーブル31Lの第1RAM15内の格納先の確定は、S104またはS105が実行される前であってもよい。例えば、プロセッサ12は、テーブル31Lの第1RAM15内の格納先を確定してから、当該格納先にテーブル31Lを格納してもよい。よって、S106は、S104またはS105に先んじて実行されてもよい。
全てのテーブル51LについてS104~S106の処理が完了すると、論物変換テーブル31、を復元する動作が終了する。
なお、この例では、管理情報30の一例として論物変換テーブル31が復元される動作が説明された。P/Eサイクルの実行回数32、有効(または無効)なデータの量33、符号レートの設定値34、リードレベルの設定値35、およびフリーブロックのリスト36、の一部または全部が、圧縮・伸張エンジン13によって圧縮して不揮発化されている場合には、プロセッサ12は、圧縮された状態でNANDメモリ20に格納されているこれらの情報を圧縮・伸張エンジン13によって伸張して第1RAM15に格納することができる。
プロセッサ12は、第1RAM15に復元された管理情報30(特に論物変換テーブル31)を使用することができる。つまり、例えば、プロセッサ12は、リードコマンドを受信した場合、当該リードコマンドに含まれる論理アドレスに対応する物理アドレスを、第1RAM15に復元された論物変換テーブル31を参照する。また、プロセッサ12は、ライトコマンドによって書き込みが要求されたユーザデータをNANDメモリ20に書き込む場合、第1RAM15に復元された論物変換テーブル31を更新することで、当該ユーザデータの位置を示す論理アドレスと、当該ユーザデータの書き込み先を示す物理アドレスと、を対応付ける。
第1RAM15内の管理情報30(例えば論物変換テーブル31)が更新された場合、当該管理情報30の不揮発化が必要となる。第1RAM15内の管理情報30と、最後に不揮発化されたときの管理情報30と、で内容が異なるからである。
図6は、第1の実施形態のメモリシステム1によって実行される、管理情報30を不揮発化する動作の一例を示すフローチャートである。ここでは管理情報30の一例として、論物変換テーブル31を不揮発化する動作について説明する。
メモリコントローラ10がホスト2からライトコマンドを受信すると(S201)、メモリコントローラ10は、ライトコマンドに対応する処理を実行する。つまり、メモリコントローラ10は、ライトコマンドによって書き込みが要求されたユーザデータをNANDメモリ20に書き込む。ユーザデータのNANDメモリ20の書き込み先が確定すると、プロセッサ12は、第1RAM15内の論物変換テーブル31の更新を実行する(S202)。例えば、プロセッサ12は、テーブル31L内の、当該ライトコマンドによって指定された論理アドレスに対応付けられた物理アドレスを、当該ユーザデータの書き込み先の物理アドレスで上書きする。
なお、ユーザデータのNANDメモリ20の書き込み先が確定するタイミングは、当該ユーザデータが実際にNANDメモリ20に書き込まれる前であってもよい。つまり、当該ユーザデータがNANDメモリ20に書き込まれる前に論物変換テーブル31の更新が実行されてもよい。
続いて、プロセッサ12は、圧縮・伸張エンジン13を制御することで、第1RAM15内の各テーブル31Lを圧縮して、圧縮された状態の各テーブル31Lを第2RAM16に格納する(S203)。なお、プロセッサ12は、圧縮されていない状態の各テーブル31Lを第1RAM15に残しておき、第1RAM15内の各テーブル31Lを引き続き使用する。
続いて、プロセッサ12は、フラッシュI/F14を制御することで、第2RAM16内の圧縮された状態の各テーブル31Lを各テーブル51LとしてNANDメモリ20に格納する(S204)。
なお、プロセッサ12は、少数のテーブル31L毎にS203およびS204の処理を行ってもよい。
圧縮された状態のテーブル31LのNANDメモリ20内の格納先が確定すると、プロセッサ12は、テーブル31Uの対応するエントリの2つ目のフィールドに、当該テーブル31LのNANDメモリ20内の不揮発化先を示す物理アドレスを上書き形式で記録(つまり更新)する(S205)。
なお、圧縮された状態のテーブル31LのNANDメモリ20内の格納先が確定するタイミングは、S203またはS204の前であってもよい。
全てのテーブル31LについてS205の処理が完了すると、プロセッサ12は、圧縮・伸張エンジン13を制御することで、第1RAM15内のテーブル31Uを圧縮して、圧縮された状態のテーブル31Uを第2RAM16に格納する(S206)。S206では、プロセッサ12は、例えば、2つ目のフィールドの値のみを圧縮の対象とする。なお、圧縮の対象の設定方法はこれに限定されない。例えば、プロセッサ12は、テーブル31Uの全部を圧縮の対象としてもよい。プロセッサ12は、圧縮されていない状態のテーブル31Uを第1RAM15に残しておき、第1RAM15内のテーブル31Uを引き続き使用する。
続いて、プロセッサ12は、フラッシュI/F14を制御することで、第2RAM16内の圧縮された状態のテーブル31Uをテーブル51UとしてNANDメモリ20に格納する(S207)。これによって、不揮発化の動作が終了する。
なお、ここでは、全てのテーブル31Lが不揮発化の対象とされたが、一部のテーブル31Lのみが不揮発化の対象とされてもよい。例えば、第1RAM15に復元されて以降、または最後に不揮発化が実行されて以降、一度も更新されていないテーブル31Lが存在する場合、当該テーブル31LについてはS203~S205の処理が実行されなくてもよい。
また、ここでは、ライトコマンドの処理が実行される毎に論物変換テーブル31の不揮発化が実行されることとして説明されたが、論物変換テーブル31の不揮発化の契機は、ライトコマンドの処理が実行される毎に限定されない。例えば、所定数のライトコマンドの処理が実行される毎に論物変換テーブル31の不揮発化が実行されてもよい。また、所定の時間間隔で論物変換テーブル31の不揮発化が実行されてもよい。また、復元されてからまたは最後に不揮発化が実行されてから更新されたテーブル31Lの数が所定数に至る毎に論物変換テーブル31の不揮発化が実行されてもよい。
また、メモリコントローラ10は、上記した論物変換テーブル31のほかに、P/Eサイクルの実行回数32、有効(または無効)なデータの量33、符号レートの設定値34、リードレベルの設定値35、およびフリーブロックのリスト36、の一部または全部を、圧縮・伸張エンジン13によって圧縮して不揮発化してもよい。前述したように、メモリコントローラ10は、NANDメモリ20に圧縮された状態で格納されたこれらの情報を復元する際には、これらの情報を圧縮・伸張エンジン13によって伸張して第1RAM15に格納する。
以上述べたように、第1の実施形態によれば、メモリコントローラ10は、第1RAM15に格納された管理情報30を、圧縮器としての圧縮・伸張エンジン13によって圧縮して、圧縮された状態の管理情報30を、NANDメモリ20に格納する。
これによって、管理情報30を圧縮しないで不揮発化する場合に比べて、WAFを抑制することができる。
また、メモリコントローラ10は、NANDメモリ20に格納されている管理情報50を読み出して、当該管理情報50を伸張器として圧縮・伸張エンジン13によって伸張して、伸張された状態、つまり復元された状態の管理情報50である管理情報30を、第1RAM15に格納する。
これによって、不揮発化された圧縮された状態の管理情報30を、使用出来る状態に復元することが可能である。
また、管理情報30は、一例では、上位階層のテーブル31Uと、下位階層のテーブル31Lと、に階層化された論物変換テーブル31である。メモリコントローラ10は、テーブル31Lを圧縮してNANDメモリ20に格納し、NANDメモリ20内の格納先(換言すると不揮発化先)をテーブル31Uに記録する。記録後、メモリコントローラ10は、テーブル31Uを圧縮してNANDメモリ20に格納する。
よって、管理情報30である論物変換テーブル31が複数の階層に階層化されている場合であっても、論物変換テーブル31を圧縮して不揮発化することが可能である。
なお、上記した例では、論物変換テーブル31が、上位階層と、下位階層と、の2つの階層に階層化されている場合について説明した。論物変換テーブル31は、3以上の階層に階層化されていてもよい。その場合、最も下位の階層のテーブルから順番に圧縮および不揮発化が実行される。
また、メモリコントローラ10は、テーブル31Uと、各テーブル31Lと、で圧縮のためのパラメータまたは圧縮のアルゴリズムを異ならせてもよい。
図7は、第1の実施形態のメモリシステム1の、圧縮のアルゴリズムまたは圧縮のためのパラメータが上位階層と下位階層とで異なる構成の一例を説明するための模式的な図である。本図に示されるように、メモリコントローラ10は、テーブル31Uを不揮発化する際には、圧縮・伸張エンジン13を制御することで、テーブル31Uを、第1の圧縮アルゴリズムまたは第1のパラメータを用いて圧縮する。また、メモリコントローラ10は、テーブル31Lを不揮発化する際には、圧縮・伸張エンジン13を制御することで、テーブル31Lを、第2の圧縮アルゴリズムまたは第2のパラメータを用いて圧縮する。
第1の圧縮アルゴリズムと、第2の圧縮アルゴリズムとは、互いに異なっている。一例では、第1の圧縮アルゴリズムは、辞書式符号化であり、第2の圧縮アルゴリズムは、差分符号化である。
第1のパラメータと、第2のパラメータとは、互いに異なっている。例えば、圧縮アルゴリズムとして差分符号化が採用されている場合には、差分値の符号化テーブルがここでいうパラメータに該当する。なお、第1のパラメータおよび第2のパラメータは、差分値の符号化テーブルに限定されない。
(第2の実施形態)
下位階層のテーブルの群は、上位階層のテーブルなどと比較して、大きなサイズを有する。よって、下位階層のテーブルの群を揮発性メモリに格納する場合には、大容量の揮発性メモリが必要となる。そこで、揮発性メモリの容量を削減するために、論物変換テーブルのうちの、上位階層のテーブルを揮発性メモリに格納し、下位階層のテーブルの群をNANDメモリに格納した状態で、論物変換テーブルを使用する、という運用が考えられる。
第2の実施形態では、下位階層のテーブルの群はNANDメモリに格納された状態で使用される場合について説明する。なお、第2の実施形態では、第1の実施形態と異なる点について説明する。第1の実施形態と同じ点については、簡略的に説明するかまたは説明を省略する。
図8は、第2の実施形態の論物変換テーブルの構成を説明するための模式的な図である。
図8に示されるように、第1RAM15には、論物変換テーブル31aを含む管理情報30aが格納されている。論物変換テーブル31aは、上位階層のテーブル31Uaのみによって構成されている。テーブル31Uaは、第1の実施形態のテーブル31Uから3つ目のフィールドを廃した構成を有している。つまり、テーブル31Uaは、セグメントインデックスが記録される1つ目のフィールドと、不揮発化先のアドレスが記録される2つ目フィールドと、を備える。
そして、NANDメモリ20には、任意の数の管理情報50aが格納される。各管理情報50aは、それぞれ異なるタイミングで不揮発化された管理情報30aである。
管理情報50aは、論物変換テーブル51aを含む。論物変換テーブル51aは、圧縮された状態のテーブル31Uaであるテーブル51Uaと、圧縮されていない状態の下位階層の各テーブル51Laと、を含む。第2の実施形態では、テーブル31Uaが圧縮された状態で不揮発化されるので、テーブル31Uaが圧縮されていない状態で不揮発化される場合に比べて、不揮発化によってNANDメモリ20に書き込まれるデータの量が低減される。つまり、WAFを抑制することができる。
図9は、第2の実施形態のメモリシステム1によって実行される、管理情報30aを復元する動作の一例を示すフローチャートである。ここでは管理情報30aの一例として論物変換テーブル31aが復元の対象とされた場合について説明する。
まず、パワーオンが行われることで(S301)、メモリシステム1の各構成要素への電力の供給が開始される。すると、プロセッサ12は、フラッシュI/F14を制御することで、NANDメモリ20内のテーブル51Uaを読み出して当該テーブル51Uaを第2RAM16に格納する(S302)。続いて、プロセッサ12は、圧縮・伸張エンジン13を制御することで、第2RAM16内のテーブル51Uaを伸張して圧縮前の状態に復元されたテーブル31Uaを第1RAM15に格納する(S303)。これによって、管理情報30aを復元する動作が終了する。
なお、第1の実施形態と同様に、管理情報30aのうちの論物変換テーブル31a以外の情報が圧縮された状態で不揮発化されている場合には、当該情報は圧縮・伸張エンジン13によって伸張されて第1RAM15に格納され得る。
プロセッサ12は、第1RAM15に復元された管理情報30aを使用することができる。
例えば、プロセッサ12は、リードコマンドを受信した場合、当該リードコマンドに含まれる論理アドレスに対応する物理アドレスを、第1RAM15に復元された論物変換テーブル31a、つまりテーブル31Uaを参照する。そして、プロセッサ12は、テーブル31Uaが示す不揮発化先のアドレスに格納されているテーブル31Laを参照する。
また、プロセッサ12は、ライトコマンドによって書き込みが要求されたユーザデータをNANDメモリ20に書き込む場合、対応するテーブル31Laを更新する。具体的には、プロセッサ12は、当該テーブル31Laを例えば第1RAM15などの揮発性メモリに読み出して、読み出された当該テーブル31Laを更新し、更新された当該テーブル31LaをNANDメモリ20に書き込む。そして、プロセッサ12は、当該更新後のテーブル31Laが元の位置とは異なる位置に格納されるのに応じて、第1RAM15内のテーブル31Uaを更新する。
第1RAM15内の管理情報30a(例えばテーブル31Ua)が更新された場合、当該管理情報30aの不揮発化が必要となる。
図10は、第2の実施形態のメモリシステム1によって実行される、管理情報30aを不揮発化する動作の一例を示すフローチャートである。ここでは管理情報30aの一例として論物変換テーブル31aが不揮発化の対象とされた場合について説明する。
メモリコントローラ10がホスト2からライトコマンドを受信すると(S401)、メモリコントローラ10は、ライトコマンドに対応する処理を実行する。つまり、メモリコントローラ10は、ライトコマンドによって書き込みが要求されたユーザデータをNANDメモリ20に書き込む。ユーザデータのNANDメモリ20の書き込み先が確定すると、プロセッサ12は、NANDメモリ20内の対応するテーブル31Laおよび第1RAM15内のテーブル31Uaの更新を実行する(S402)。プロセッサ12は、NANDメモリ20内の上記テーブル31Laを更新すると、更新後の上記テーブル31Laの位置をテーブル31Uaに上書き形式で記録する。
なお、ユーザデータのNANDメモリ20の書き込み先が確定するタイミングは、当該ユーザデータが実際にNANDメモリ20に書き込まれる前であってもよい。つまり、当該ユーザデータがNANDメモリ20に書き込まれる前に各種テーブル(テーブル31La、またはテーブル31Ua)の更新が実行されてもよい。
続いて、プロセッサ12は、圧縮・伸張エンジン13を制御することで、第1RAM15内のテーブル31Uaを圧縮して、圧縮された状態のテーブル31Uaを第2RAM16に格納する(S403)。なお、プロセッサ12は、圧縮されていない状態のテーブル31Uaを第1RAM15に残しておき、第1RAM15内のテーブル31Uaを引き続き使用する。
続いて、プロセッサ12は、フラッシュI/F14を制御することで、第2RAM16内の圧縮された状態のテーブル31Uaをテーブル51UaとしてNANDメモリ20に格納する(S404)。これによって、第2の実施形態の不揮発化の動作が終了する。
なお、第1の実施形態と同様に、テーブル31Uaの不揮発化の契機は、上記に限定されず、任意に構成され得る。また、メモリコントローラ10は、上記した論物変換テーブル31aのほかに、P/Eサイクルの実行回数32、有効(または無効)なデータの量33、符号レートの設定値34、リードレベルの設定値35、およびフリーブロックのリスト36、の一部または全部を、圧縮・伸張エンジン13によって圧縮して不揮発化してもよい。
以上述べたように、第2の実施形態によれば、メモリコントローラ10は、上位階層のテーブル31Uaを第1RAM15に格納し、下位階層のテーブル31LaをNANDメモリ20に格納した状態で、論物変換テーブル31a、51aを使用する。そして、メモリコントローラ10は、テーブル31Uaを、圧縮して不揮発化する。
このように、メモリコントローラ10が、論物変換テーブルのうちの特定の階層のテーブルのみを揮発性メモリに格納するように構成された場合であっても、メモリコントローラ10は、当該特定の階層のテーブルの不揮発性を実行する際に当該特定の階層のテーブルを圧縮することができる。これによって、何れの階層のテーブルも圧縮しないで不揮発化する場合に比べて、WAFを抑制することができる。
(第3の実施形態)
第3の実施形態では、下位階層のテーブルの群のみが圧縮されて不揮発化される例について説明する。なお、第3の実施形態では、第1の実施形態と異なる点について説明する。第1の実施形態と同じ点については、簡略的に説明するかまたは説明を省略する。
図11は、第3の実施形態の論物変換テーブルの構成を説明するための模式的な図である。
図11に示されるように、第1RAM15には、論物変換テーブル31を含む管理情報30が格納されている。論物変換テーブル31は、第1の実施形態と同様の構成を有している。
そして、NANDメモリ20には、任意の数の管理情報50bが格納される。各管理情報50bは、それぞれ異なるタイミングで不揮発化された管理情報30である。
管理情報50bは、論物変換テーブル51bを含む。論物変換テーブル51bは、圧縮されていない状態のテーブル31Uであるテーブル51Ubと、圧縮された状態の下位階層の各テーブル51Lbと、を含む。第3の実施形態では、各テーブル31Lが圧縮された状態で不揮発化されるので、各テーブル31Lが圧縮されていない状態で不揮発化される場合に比べて、不揮発化によってNANDメモリ20に書き込まれるデータの量が低減される。つまり、WAFを抑制することができる。
図12は、第3の実施形態のメモリシステム1によって実行される、管理情報30を復元する動作の一例を示すフローチャートである。ここでは管理情報30の一例として論物変換テーブル31が復元の対象とされた場合について説明する。
まず、パワーオンが行われることで(S501)、メモリシステム1の各構成要素への電力の供給が開始される。すると、プロセッサ12は、フラッシュI/F14を制御することで、NANDメモリ20内のテーブル51Ubを読み出して当該テーブル51Ubを第1RAM15に格納する(S502)。
続いて、プロセッサ12は、フラッシュI/F14を制御することで、NANDメモリ20内の各テーブル51Lbを読み出して当該テーブル51Lbを第2RAM16に格納する(S503)。S503の処理においては、プロセッサ12は、S502の処理によって第1RAM15に格納されたテーブル31Uの2つ目のフィールドを参照することによって、各テーブル51LのNANDメモリ20内の位置を特定することができる。プロセッサ12は、特定した各位置を、対応するテーブル51Lbの読み出し元としてフラッシュI/F14に通知する。
続いて、プロセッサ12は、圧縮・伸張エンジン13を制御することで、第2RAM16内の各テーブル51Lbを伸張して圧縮前の状態に復元された各テーブル31Lを第1RAM15に格納する(S504)。
なお、プロセッサ12は、少数のテーブル51Lb毎にS503およびS504の処理を行ってもよい。
テーブル31Lの第1RAM15内の格納先が確定すると、プロセッサ12は、対応するエントリの3つ目のフィールドに、当該テーブル31Lの第1RAM15内の格納先を示すポインタを記録する(S505)。
なお、テーブル31Lの第1RAM15内の格納先の確定は、S503またはS504が実行される前であってもよい。よって、S505は、S503またはS504に先んじて実行されてもよい。
全てのテーブル51LbについてS503~S503の処理が完了すると、管理情報30、特に論物変換テーブル31、を復元する動作が終了する。
第1の実施形態と同様、管理情報30のうちの論物変換テーブル31以外の任意の情報が圧縮されて不揮発化されている場合には、当該情報は、圧縮・伸張エンジン13によって伸張されて第1RAM15に格納され得る。
プロセッサ12は、第1RAM15に復元された管理情報30を使用することができる。そして、第1RAM15内の管理情報30(例えば論物変換テーブル31)が更新された場合、当該管理情報30の不揮発化が必要となる。
図13は、第3の実施形態のメモリシステム1によって実行される、管理情報30を不揮発化する動作の一例を示すフローチャートである。ここでは管理情報30の一例として論物変換テーブル31が不揮発化の対象とされた場合について説明する。
まず、S601~S605において、第1の実施形態のS201~S205(図6参照)と同様の処理が実行される。
全てのテーブル31LについてS605の処理が完了すると、プロセッサ12は、フラッシュI/F14を制御することで、第1RAM15内のテーブル31Uをテーブル51UbとしてNANDメモリ20に格納する(S606)。なお、プロセッサ12は、圧縮されていない状態のテーブル31Uを第1RAM15に残しておき、第1RAM15内のテーブル31Uを引き続き使用する。
S606によって、第3の実施形態にかかる不揮発化の動作が終了する。
なお、第1の実施形態と同様に、論物変換テーブル31の不揮発化の契機は、上記に限定されず、任意に構成され得る。また、メモリコントローラ10は、各テーブル31Lのほかに、P/Eサイクルの実行回数32、有効(または無効)なデータの量33、符号レートの設定値34、リードレベルの設定値35、およびフリーブロックのリスト36、の一部または全部を、圧縮・伸張エンジン13によって圧縮して不揮発化してもよい。
以上述べたように、第3の実施形態によれば、メモリコントローラ10は、上位階層のテーブル31Uを圧縮せずに不揮発化し、下位階層のテーブル31Lを圧縮して不揮発化する。
このように、メモリコントローラ10が、論物変換テーブルのうちの特定の階層のテーブルのみを揮発性メモリに格納するように構成された場合であっても、メモリコントローラ10は、当該特定の階層のテーブルの不揮発性を実行する際に当該特定の階層のテーブルを圧縮することができる。これによって、何れの階層のテーブルも圧縮しないで不揮発化する場合に比べて、WAFを抑制することができる。
また、メモリコントローラ10は、テーブル31LをNANDメモリ20に圧縮して格納し、NANDメモリ20内の当該テーブル31Lの格納先をテーブル31Uに記録する。そして、メモリコントローラ10は、当該テーブル31Lの格納先をテーブル31Uに記録した後、テーブル31Uの不揮発化を実行する。
よって、管理情報30である論物変換テーブル31が複数の階層で構成される場合、論物変換テーブル31の一部を圧縮して不揮発化することが可能である。
第1~第3の実施形態にて述べたように、実施形態のメモリシステムは、不揮発性の第1メモリとしてのNANDメモリ20と、揮発性の第2メモリとしての第1RAM15と、圧縮器としての圧縮・伸張エンジン13と、メモリコントローラ10と、を備える。メモリコントローラ10は、管理情報30(管理情報30a)を第1RAM15に格納して、第1RAM15に格納された管理情報30(管理情報30a)を使用する。メモリコントローラ10は、管理情報30(管理情報30a)の一部または全部を圧縮・伸張エンジン13によって圧縮し、圧縮された状態の管理情報30(管理情報30a)の一部または全部をNANDメモリ20に格納する。
これによって、書き込み倍率(WAF)を抑制することができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 メモリシステム、2 ホスト、10 メモリコントローラ、11 ホストI/F、12 プロセッサ、13 圧縮・伸張エンジン、14 フラッシュI/F、15 第1RAM、16 第2RAM、17 バス、20 NANDメモリ、21 メモリチップ、22 アクセス回路、23 メモリセルアレイ、30,30a,50,50a,50b 管理情報、31,31a,51,51a,51b 論物変換テーブル、31L,31La,31Lb,51L,51La テーブル、31U,31Ua,51U,51Ua,51Ub テーブル、32 P/Eサイクルの実行回数、33 有効(または無効)なデータの量、34 符号レートの設定値、35 リードレベルの設定値、36 フリーブロックのリスト。

Claims (5)

  1. 不揮発性の第1メモリと、
    揮発性の第2メモリと、
    前記第2メモリに管理情報である第1情報を格納して、前記第2メモリに格納されている前記第1情報を使用し、前記第1情報を圧縮器で圧縮して、前記圧縮された第1情報である第2情報を前記第1メモリに格納する、メモリコントローラと、
    を備え、
    前記第1情報は、前記第1メモリ内の位置を示す物理アドレスと、ホストが指定する論理アドレスと、の対応関係を記録したテーブルであり、
    前記テーブルは、複数の階層のテーブルに階層化され、
    前記複数の階層のテーブルは、第1の階層の第1テーブルと、前記第1の階層の下位の階層の第2の階層の第2テーブルと、を含み、
    前記メモリコントローラは、前記第2テーブルを圧縮して前記第1メモリに格納し、前記第1メモリ内の前記第2テーブルの格納位置を前記第1テーブルに記録し、前記格納位置が記録された第1テーブルを圧縮して前記第1メモリに格納する、
    メモリシステム。
  2. 前記メモリコントローラは、前記第1メモリに格納されている前記第2情報を読み出して、読み出された前記第2情報を伸張器で伸張して、前記伸張された第2情報を前記第2メモリに格納する、
    請求項1に記載のメモリシステム。
  3. 前記メモリコントローラは、前記第1テーブルの圧縮で使用するパラメータと異なるパラメータを使用して前記第2テーブルを圧縮する、
    請求項1に記載のメモリシステム。
  4. 前記メモリコントローラは、前記第1テーブルの圧縮で使用するアルゴリズムと異なるアルゴリズムを使用して前記第2テーブルを圧縮する、
    請求項1に記載のメモリシステム。
  5. 不揮発性の第1メモリと、
    揮発性の第2メモリと、
    前記第2メモリに管理情報である第1情報を格納して、前記第2メモリに格納されている前記第1情報を使用し、前記第1情報を圧縮器で圧縮して、前記圧縮された第1情報である第2情報を前記第1メモリに格納する、メモリコントローラと、
    を備え、
    前記メモリコントローラは、前記第1メモリ内の位置を示す物理アドレスと、ホストが指定する論理アドレスと、の対応関係を記録したテーブルを管理し、
    前記テーブルは、複数の階層のテーブルに階層化され、
    前記複数の階層のテーブルは、第1の階層の第1テーブルと、前記第1の階層の下位の階層の第2テーブルと、を含み、
    前記第2テーブルは前記第1情報であり、
    前記第1テーブルは、前記第2メモリに格納されて、
    前記メモリコントローラは、前記第2メモリに格納された前記第1テーブルを使用し、前記第2テーブルを圧縮して前記第1メモリに格納し、前記第1メモリ内の前記第2テーブルの格納位置を前記第1テーブルに記録し、前記格納位置が記録された第1テーブルを圧縮しないで前記第1メモリに格納する、
    メモリシステム。
JP2019160660A 2019-09-03 2019-09-03 メモリシステム Active JP7362369B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2019160660A JP7362369B2 (ja) 2019-09-03 2019-09-03 メモリシステム
US16/806,173 US11609844B2 (en) 2019-09-03 2020-03-02 Memory system with hierarchical tables

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019160660A JP7362369B2 (ja) 2019-09-03 2019-09-03 メモリシステム

Publications (2)

Publication Number Publication Date
JP2021039557A JP2021039557A (ja) 2021-03-11
JP7362369B2 true JP7362369B2 (ja) 2023-10-17

Family

ID=74682134

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019160660A Active JP7362369B2 (ja) 2019-09-03 2019-09-03 メモリシステム

Country Status (2)

Country Link
US (1) US11609844B2 (ja)
JP (1) JP7362369B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022139262A (ja) 2021-03-11 2022-09-26 株式会社日立ソリューションズ マンガ広告作成支援システム、及びマンガ広告作成支援方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013196115A (ja) 2012-03-16 2013-09-30 Toshiba Corp メモリシステム
JP2014527672A (ja) 2011-08-16 2014-10-16 ピュア・ストレージ・インコーポレイテッド ストレージシステムにおけるマッピングテーブルを効果的に管理するコンピューターシステムおよびその方法
JP2019020788A (ja) 2017-07-11 2019-02-07 東芝メモリ株式会社 メモリシステムおよび制御方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5696927A (en) * 1995-12-21 1997-12-09 Advanced Micro Devices, Inc. Memory paging system and method including compressed page mapping hierarchy
US8244958B2 (en) * 2005-05-09 2012-08-14 Sandisk Il Ltd. Method and system for facilitating fast wake-up of a flash memory system
US20160092371A1 (en) * 2014-09-26 2016-03-31 Intel Corporation Method and Apparatus For Deterministic Translation Lookaside Buffer (TLB) Miss Handling
US9880762B1 (en) 2015-12-30 2018-01-30 EMC IP Holding Company LLC Compressing metadata blocks prior to writing the metadata blocks out to secondary storage
US9946462B1 (en) * 2016-02-15 2018-04-17 Seagate Technology Llc Address mapping table compression
US10359955B2 (en) 2017-02-23 2019-07-23 Western Digital Technologies, Inc. Data storage device configured to perform a non-blocking control update operation
US10802727B2 (en) 2017-06-07 2020-10-13 ScaleFlux, Inc. Solid-state storage power failure protection using distributed metadata checkpointing
US10635654B2 (en) 2017-06-12 2020-04-28 Samsung Electronics Co., Ltd. Data journaling for large solid state storage devices with low DRAM/SRAM
US10747439B2 (en) 2018-03-02 2020-08-18 Intel Corporation Method and apparatus for power-fail safe compression and dynamic capacity for a storage device

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014527672A (ja) 2011-08-16 2014-10-16 ピュア・ストレージ・インコーポレイテッド ストレージシステムにおけるマッピングテーブルを効果的に管理するコンピューターシステムおよびその方法
JP2013196115A (ja) 2012-03-16 2013-09-30 Toshiba Corp メモリシステム
JP2019020788A (ja) 2017-07-11 2019-02-07 東芝メモリ株式会社 メモリシステムおよび制御方法

Also Published As

Publication number Publication date
US20210064524A1 (en) 2021-03-04
JP2021039557A (ja) 2021-03-11
US11609844B2 (en) 2023-03-21

Similar Documents

Publication Publication Date Title
KR101916206B1 (ko) 고체 상태 드라이브에서 자유 공간 어카운트와 함께 재구축되는 2 스테이지 파워 온 맵을 위한 방법들, 디바이스들, 및 시스템들
KR101948381B1 (ko) 고체 상태 드라이브에서 프래그먼티드 펌웨어 테이블 재구축을 위한 방법들, 데이터 저장 디바이스들 및 시스템들
US9792067B2 (en) Trim command processing in a solid state drive
TWI497293B (zh) 固態儲存裝置內之資料管理
US8910017B2 (en) Flash memory with random partition
KR100595909B1 (ko) 저장장치 및 플래시 메모리 장치내 정보 액세스 방법 및 정보 저장 관리 방법
US9335950B2 (en) Multiple stream compression and formatting of data for data storage systems
JP6007332B2 (ja) ストレージシステム及びデータライト方法
US20180276114A1 (en) Memory controller
WO2011055407A1 (en) Flash memory module
JP5364807B2 (ja) メモリコントローラ及び不揮発性記憶装置
JP2011511388A (ja) メモリマッピング技術
KR20070024504A (ko) 기억 장치, 메모리 관리 방법 및 프로그램
JP6696280B2 (ja) 情報処理装置、raid制御方法、およびraid制御プログラム
JP2014052978A (ja) 不揮発性半導体メモリの制御方法及びメモリシステム
JP2023044518A (ja) メモリシステムおよび方法
JP7362369B2 (ja) メモリシステム
KR101369408B1 (ko) 스토리지 시스템 및 이의 데이터 전송 방법
US20200081834A1 (en) Set aware system data and mapping tables
JP7302497B2 (ja) メモリコントローラ及びフラッシュメモリシステム
Van Dai et al. A novel recovery data technique on MLC NAND flash memory
WO2023100212A1 (ja) メモリコントローラおよびフラッシュメモリシステム
JP6260395B2 (ja) メモリコントローラ、メモリシステム及びメモリ制御方法
JP2012037971A (ja) メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法
US20240004549A1 (en) Memory system

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220308

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230131

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230131

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230329

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20230509

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230803

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20230818

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: 20230905

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20231004

R151 Written notification of patent or utility model registration

Ref document number: 7362369

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151