JP7048650B2 - Memory device and method - Google Patents

Memory device and method Download PDF

Info

Publication number
JP7048650B2
JP7048650B2 JP2020017134A JP2020017134A JP7048650B2 JP 7048650 B2 JP7048650 B2 JP 7048650B2 JP 2020017134 A JP2020017134 A JP 2020017134A JP 2020017134 A JP2020017134 A JP 2020017134A JP 7048650 B2 JP7048650 B2 JP 7048650B2
Authority
JP
Japan
Prior art keywords
fragment
memory
cache
cache line
volatile memory
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
JP2020017134A
Other languages
Japanese (ja)
Other versions
JP2020074222A (en
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 JP2020017134A priority Critical patent/JP7048650B2/en
Publication of JP2020074222A publication Critical patent/JP2020074222A/en
Priority to JP2022017352A priority patent/JP7238178B2/en
Application granted granted Critical
Publication of JP7048650B2 publication Critical patent/JP7048650B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本実施形態は、メモリ装置及び方法に関する。 The present embodiment relates to a memory device and a method .

ソリッドステートドライブ(SSD)は、例えば、NAND型フラッシュメモリなどのような不揮発性メモリを備える。NAND型フラッシュメモリは、複数のブロック(物理ブロック)を備える。複数のブロックは、ワード線とビット線との交点に配置される複数のメモリセルを含む。 The solid state drive (SSD) includes a non-volatile memory such as, for example, a NAND flash memory. The NAND flash memory includes a plurality of blocks (physical blocks). A plurality of blocks include a plurality of memory cells arranged at the intersection of a word line and a bit line.

特開2012-141944号公報Japanese Unexamined Patent Publication No. 2012-141944

本実施形態は、アドレス変換データを効率的に管理するメモリ装置及び方法を提供する。 The present embodiment provides a memory device and a method for efficiently managing address translation data.

本実施形態によれば、メモリ装置は、不揮発性メモリと、キャッシュメモリと、プロセッサとを含む。プロセッサは、不揮発性メモリからキャッシュメモリへ、アクセスの対象論理アドレスに対応するアドレスマッピングの複数のレイヤのそれぞれのフラグメント、及び、対象論理アドレスに対応するデータマッピングのフラグメントの一部をキャッシュラインとして、ロードし、キャッシュメモリにキャッシュラインとしてロードされたアドレスマッピングの複数のレイヤのフラグメントを参照して、不揮発性メモリに対して対象論理アドレスからマップされる物理アドレスへアクセスするように構成される。データマッピングの各ビットは、不揮発性メモリの物理アドレスに記憶されたデータが有効か否かを示す。複数のレイヤは、複数のレイヤのそれぞれが複数のフラグメントを有しており、上位レイヤに属するフラグメントの一部であるエレメントが下位レイヤに属するフラグメントに対応する階層構造を有する。複数のレイヤのうちの最下レイヤを除く各レイヤに属する複数のフラグメントのそれぞれは、直下のレイヤに属する複数のフラグメントに対応して複数のエレメントに区分けされ、直下のレイヤに属する複数のフラグメントを示す複数の参照先情報を含む。複数のレイヤのうちの最下レイヤに属する複数のフラグメントは、最下レイヤにマップされた各論理アドレスと、各論理アドレスに関する不揮発性メモリの物理アドレスと、の対応を示す。データマッピングのフラグメントは、アドレスマッピングの複数のレイヤのロードされたフラグメントのそれぞれと同じサイズを有する。ロードされたアドレスマッピングの複数のレイヤのそれぞれのフラグメントのキャッシュライン、又は、ロードされたデータマッピングのフラグメントのキャッシュラインは、その前後で参照されるキャッシュラインを示すポインタをさらに含む。 According to the present embodiment, the memory device includes a non-volatile memory, a cache memory, and a processor. The processor uses a part of each fragment of the address mapping corresponding to the target logical address of access and a part of the data mapping fragment corresponding to the target logical address as a cache line from the non-volatile memory to the cache memory. It is configured to access the physical address mapped from the target logical address to the non-volatile memory by referencing multiple layers of address mapping that are loaded and loaded as cache lines into the cache memory. Each bit of the data mapping indicates whether the data stored in the physical address of the non-volatile memory is valid. Each of the plurality of layers has a plurality of fragments, and the elements that are a part of the fragments belonging to the upper layer have a hierarchical structure corresponding to the fragments belonging to the lower layer. Each of the multiple fragments belonging to each layer except the bottom layer of the multiple layers is divided into multiple elements corresponding to the multiple fragments belonging to the layer immediately below, and the multiple fragments belonging to the layer directly below are divided into multiple elements. Contains multiple referenced information to indicate. The plurality of fragments belonging to the lowest layer among the plurality of layers indicate the correspondence between each logical address mapped to the lowest layer and the physical address of the non-volatile memory for each logical address. The data mapping fragment has the same size as each of the loaded fragments of multiple layers of address mapping. The cache line of each fragment of the loaded address mapping layer, or the cache line of the loaded data mapping fragment, further includes pointers to the cache lines referenced before and after it.

第1の実施形態に係る情報処理システムの構成の一例を示すブロック図。The block diagram which shows an example of the structure of the information processing system which concerns on 1st Embodiment. 一般的なルックアップテーブルとアクティブデータマップとを例示する概念図。A conceptual diagram illustrating a typical look-up table and an active data map. 第1の実施形態に係る階層的ルックアップテーブルの構成を例示する概念図。The conceptual diagram which illustrates the structure of the hierarchical look-up table which concerns on 1st Embodiment. 第1の実施形態に係る階層的ルックアップテーブルのフラグメントのデータフォーマットを例示するデータ構造図。The data structure diagram which illustrates the data format of the fragment of the hierarchical look-up table which concerns on 1st Embodiment. 第1の実施形態に係るアクティブデータマップのフラグメントのデータフォーマットを例示するデータ構造図。The data structure diagram which illustrates the data format of the fragment of the active data map which concerns on 1st Embodiment. 第1の実施形態に係るキャッシュメモリから不揮発性メモリへの書き戻し時に使用されるデータフォーマットを例示するデータ構造図。The data structure diagram which illustrates the data format used at the time of writing back from the cache memory to the non-volatile memory which concerns on 1st Embodiment. 第1の実施形態に係る物理アドレスの探索処理を例示するフローチャート。The flowchart which illustrates the search process of the physical address which concerns on 1st Embodiment. 第1の実施形態に係る物理アドレスの探索処理におけるキャッシュラインの関係を例示するブロック図。The block diagram which illustrates the relationship of the cache line in the search process of the physical address which concerns on 1st Embodiment. 第1の実施形態に係るキャッシュメモリのリスト構造を例示するデータ構造図。The data structure diagram which illustrates the list structure of the cache memory which concerns on 1st Embodiment. 第1の実施形態に係るキャッシュメモリにおけるキャッシュラインの状態変化を例示するフローチャート。The flowchart which illustrates the state change of the cache line in the cache memory which concerns on 1st Embodiment. 第1の実施形態に係るキャッシュメモリにおけるキャッシュラインの状態変化を例示するブロック図。The block diagram which illustrates the state change of the cache line in the cache memory which concerns on 1st Embodiment. 第1の実施形態に係る階層的ルックアップテーブルのフラグメントと不揮発性メモリのページとの関係を例示するブロック図。The block diagram which illustrates the relationship between the fragment of the hierarchical look-up table which concerns on 1st Embodiment, and the page of a non-volatile memory.

以下、図面を参照しながら各実施形態について説明する。以下の説明において、略同一の機能及び構成要素については、同一符号を付し、重複説明は必要な場合にのみ行う。 Hereinafter, each embodiment will be described with reference to the drawings. In the following description, substantially the same functions and components are designated by the same reference numerals, and duplicate explanations are given only when necessary.

[第1の実施形態]
本実施形態は、階層的なルックアップテーブル(Look Up Table。以下、LUTとする)を備えるメモリ装置について説明する。LUTは、物理アドレスから論理アドレスへの変換に用いられるアドレス変換データの一種である。
[First Embodiment]
This embodiment describes a memory device including a hierarchical look-up table (hereinafter referred to as LUT). A LUT is a type of address translation data used for translation from a physical address to a logical address.

本実施形態において、メモリ装置は、例えばSSDであるとするが、メモリカード、ハードディスクドライブ(HDD)、HDDとSSDとを含むハイブリッド型メモリ装置、光ディスク、ストレージ装置、メモリサーバなど様々な種別のメモリ装置でもよい。メモリ装置がSSDの場合には、当該メモリ装置はHDDと同じ通信インタフェースを持つ。 In the present embodiment, the memory device is, for example, an SSD, but various types of memory such as a memory card, a hard disk drive (HDD), a hybrid memory device including an HDD and an SSD, an optical disk, a storage device, and a memory server. It may be a device. When the memory device is an SSD, the memory device has the same communication interface as the HDD.

SSDであるメモリ装置は、不揮発性メモリを含む。本実施形態では、不揮発性メモリがNAND型フラッシュメモリを含む場合について説明する。しかしながら、不揮発性メモリは、例えば、NOR型フラッシュメモリ、MRAM(Magnetoresistive Random Access Memory)、PRAM(Phase change Random Access Memory)、ReRAM(Resistive Random Access Memory)、又は、FeRAM(Ferroelectric Random Access Memory)などNAND型フラッシュメモリではない他の種別のメモリを含むとしてもよい。また、不揮発性メモリは、3次元構造のフラッシュメモリを含むとしてもよい。 A memory device that is an SSD includes a non-volatile memory. In this embodiment, a case where the non-volatile memory includes a NAND flash memory will be described. However, the non-volatile memory is a NAND such as a NOR type flash memory, an MRAM (Magnetoresistive Random Access Memory), a PRAM (Phase change Random Access Memory), a ReRAM (Resistive Random Access Memory), or a FeRAM (Ferroelectric Random Access Memory). It may include other types of memory that are not type flash memory. Further, the non-volatile memory may include a flash memory having a three-dimensional structure.

不揮発性メモリでは、消去単位エリアごとに、データが一括して消去される。消去単位エリアは、複数の書き込み単位エリア及び複数の読み出し単位エリアを含む。不揮発性メモリがNAND型フラッシュメモリの場合、消去単位エリアはブロックに相当する。書き込み単位エリア及び読み出し単位エリアはページに相当する。 In the non-volatile memory, data is erased collectively for each erase unit area. The erase unit area includes a plurality of write unit areas and a plurality of read unit areas. When the non-volatile memory is a NAND flash memory, the erasing unit area corresponds to a block. The write unit area and the read unit area correspond to pages.

本実施形態において、アクセスとは、メモリへデータを書き込む又は格納すること、及び、メモリからデータを読み出すことの双方を意味する。 In the present embodiment, the access means both writing or storing data in the memory and reading data from the memory.

本実施形態において、プログラムは、コンピュータプログラムとする。コンピュータプログラムでは、コンピュータが行うべき処理が順序付けて記述されている。プログラムは、コンピュータで実行されることにより、コマンド、データ、及び、情報の発行及び受付、データ処理及び演算などの各種機能を実現可能である。 In this embodiment, the program is a computer program. In a computer program, the processes that a computer should perform are described in order. By being executed by a computer, the program can realize various functions such as command, data, and issuance and reception of information, data processing, and calculation.

本実施形態において、コンピュータとは、例えば、命令にしたがって演算又は処理を実行する機械である。例えば、コンピュータは、メモリとプロセッサとを含む。メモリは、プログラムを記憶する。プロセッサは、メモリに記憶されているプログラムに記述された命令セット(例えば、データの転送、計算、加工、制御、管理)を実行するためのハードウェアである。本実施形態において、コンピュータは、広義に解釈されるべきであり、例えば、情報処理装置、メモリ装置のコントローラ、パーソナルコンピュータ、大型コンピュータ、マイクロコンピュータ、サーバ装置などを含む。本実施形態においては、コンピュータに代えて、複数のコンピュータが連携して動作するコンピュータシステムが用いられてもよい。 In the present embodiment, the computer is, for example, a machine that executes an operation or a process according to an instruction. For example, a computer includes a memory and a processor. The memory stores the program. A processor is hardware for executing an instruction set (for example, data transfer, calculation, processing, control, management) described in a program stored in a memory. In the present embodiment, the computer should be interpreted in a broad sense, and includes, for example, an information processing device, a controller of a memory device, a personal computer, a large computer, a microcomputer, a server device, and the like. In the present embodiment, instead of the computer, a computer system in which a plurality of computers operate in cooperation with each other may be used.

本実施形態において、ソフトウェアインタフェースとは、例えば、一方のプログラムが他方のプログラムを利用するために定義されている規約及び手順である。より具体的には、ソフトウェアインタフェースは、例えば、あるプログラムの機能及び管理するデータなどを、他のプログラムから呼び出し、呼び出された機能及び管理するデータなどを利用するための手順及びデータ形式などを定めた規約である。ソフトウェアインタフェースの一例として、API(Application Programming Interface)がある。 In this embodiment, the software interface is, for example, a convention and procedure defined for one program to utilize the other program. More specifically, the software interface defines, for example, a procedure and a data format for calling a function of a certain program and data to be managed from another program, and using the called function and the data to be managed. It is a convention. An API (Application Programming Interface) is an example of a software interface.

本実施形態において、識別情報はIDと表記する。 In this embodiment, the identification information is referred to as an ID.

図1は、本実施形態に係る情報処理システムの一例を示すブロック図である。 FIG. 1 is a block diagram showing an example of an information processing system according to the present embodiment.

情報処理システム1は、情報処理装置2とメモリ装置3とを含む。情報処理装置2は、メモリ装置3に対応するホスト装置として動作可能である。 The information processing system 1 includes an information processing device 2 and a memory device 3. The information processing device 2 can operate as a host device corresponding to the memory device 3.

メモリ装置3は、情報処理装置2に内蔵されてもよく、情報処理装置2とメモリ装置3とは、ネットワークなどによりデータを送受信可能に接続されるとしてもよい。メモリ装置3は、複数の情報処理装置2と通信可能に接続されてもよい。また、複数のメモリ装置3が、1以上の情報処理装置2と通信可能に接続されてもよい。 The memory device 3 may be built in the information processing device 2, and the information processing device 2 and the memory device 3 may be connected to each other so as to be able to transmit and receive data by a network or the like. The memory device 3 may be communicably connected to a plurality of information processing devices 2. Further, a plurality of memory devices 3 may be communicably connected to one or more information processing devices 2.

メモリ装置3は、制御回路の一例としてのコントローラ4と、不揮発性メモリ5とを含む。コントローラ4と不揮発性メモリ5とは、着脱可能とし、メモリ装置3のメモリ容量は自由に拡張できるとしてもよい。ここで、メモリ容量とは、メモリに書き込み可能な最大のデータ量とする。 The memory device 3 includes a controller 4 as an example of a control circuit and a non-volatile memory 5. The controller 4 and the non-volatile memory 5 may be detachable, and the memory capacity of the memory device 3 may be freely expanded. Here, the memory capacity is the maximum amount of data that can be written to the memory.

コントローラ4は、通信インタフェース制御部41、書き込みバッファメモリ42、読み出しバッファメモリ43、プロセッサ44、メモリ45A,45B、不揮発性メモリコントローラ46を含む。これらは、内部バスIBにより電気的に接続される。また、コントローラ4は、不揮発性メモリ5と電気的に接続される。 The controller 4 includes a communication interface control unit 41, a write buffer memory 42, a read buffer memory 43, a processor 44, memories 45A and 45B, and a non-volatile memory controller 46. These are electrically connected by an internal bus IB. Further, the controller 4 is electrically connected to the non-volatile memory 5.

通信インタフェース制御部41は、例えば、送受信制御部411と、コマンド制御部412を含む。通信インタフェース制御部41は、外部装置とメモリ装置3との間で通信インタフェースにしたがって通信を行う。 The communication interface control unit 41 includes, for example, a transmission / reception control unit 411 and a command control unit 412. The communication interface control unit 41 communicates between the external device and the memory device 3 according to the communication interface.

送受信制御部411は、例えば、情報処理装置2などのような外部装置からのデータ、情報、信号、コマンド、リクエスト、メッセージ、指定などの受信を制御し、外部装置へのデータ、情報、信号、コマンド、リクエスト、メッセージ、指定などの送信を制御する。 The transmission / reception control unit 411 controls the reception of data, information, signals, commands, requests, messages, designations, etc. from an external device such as the information processing device 2, and the data, information, signals to the external device, etc. Controls the sending of commands, requests, messages, specifications, etc.

送受信制御部411は、例えば、情報処理装置2との間で、データを送受信する。送受信制御部411は、情報処理装置2から受信したデータを書き込みバッファメモリ42へ格納する。送受信制御部411は、不揮発性メモリ5から読み出されたデータを読み出しバッファメモリ43から読み出し、情報処理装置2へ送信する。 The transmission / reception control unit 411 transmits / receives data to / from, for example, the information processing apparatus 2. The transmission / reception control unit 411 stores the data received from the information processing apparatus 2 in the write buffer memory 42. The transmission / reception control unit 411 reads the data read from the non-volatile memory 5 from the read buffer memory 43 and transmits the data to the information processing apparatus 2.

より具体的には、送受信制御部411は、情報処理装置2との間で、データを送受信する。送受信制御部411は、情報処理装置2から受信したデータを書き込みバッファメモリ42へ格納する。送受信制御部411は、不揮発性メモリ5から読み出されたデータを読み出しバッファメモリ43から読み出し、情報処理装置2へ送信する。 More specifically, the transmission / reception control unit 411 transmits / receives data to / from the information processing apparatus 2. The transmission / reception control unit 411 stores the data received from the information processing apparatus 2 in the write buffer memory 42. The transmission / reception control unit 411 reads the data read from the non-volatile memory 5 from the read buffer memory 43 and transmits the data to the information processing apparatus 2.

コマンド制御部412は、例えば、外部装置からのコマンド、メッセージ、リクエスト、指令などの受信を制御し、外部装置へのコマンド、メッセージ、リクエスト、指令などの送信を制御する。 The command control unit 412 controls, for example, the reception of commands, messages, requests, commands, etc. from an external device, and controls the transmission of commands, messages, requests, commands, etc. to the external device.

より具体的には、コマンド制御部412は、情報処理装置2との間で、コマンドを送受信する。コマンド制御部412は、情報処理装置2から受信したコマンドが書き込みコマンドである場合は、書き込み制御部441へ書き込みコマンドを送る。また、コマンド制御部412は、情報処理装置2から受信したコマンドが読み出しコマンドである場合は、読み出し制御部442へ読み出しコマンドを送る。 More specifically, the command control unit 412 sends and receives commands to and from the information processing device 2. When the command received from the information processing apparatus 2 is a write command, the command control unit 412 sends a write command to the write control unit 441. Further, when the command received from the information processing apparatus 2 is a read command, the command control unit 412 sends a read command to the read control unit 442.

情報処理装置2とコマンド制御部412との間で送受信されるコマンドと、メモリ装置3内部で送受信されるコマンドとが同じ名称の場合でも、コマンド形式はそれぞれ異なっていてもよい。 Even if the command sent / received between the information processing device 2 and the command control unit 412 and the command sent / received inside the memory device 3 have the same name, the command formats may be different from each other.

なお、通信インタフェース制御部41の全部又は一部の機能は、プロセッサ44によって実現されてもよく、プロセッサ44とは別のプロセッサ内によって実現されてもよい。 All or part of the functions of the communication interface control unit 41 may be realized by the processor 44, or may be realized by a processor other than the processor 44.

書き込みバッファメモリ42は、情報処理装置2から送信された書き込みデータを一時的に格納する。具体的には、書き込みバッファメモリ42は、当該書き込みデータが不揮発性メモリ5に適した所定のデータサイズになるまで、一時的にデータを格納する。 The write buffer memory 42 temporarily stores the write data transmitted from the information processing apparatus 2. Specifically, the write buffer memory 42 temporarily stores the data until the write data has a predetermined data size suitable for the non-volatile memory 5.

読み出しバッファメモリ43は、不揮発性メモリ5から読み出された読み出しデータを一時的に格納する。具体的には、読み出しバッファメモリ43において、読み出しデータは、情報処理装置2に適した順序(情報処理装置2が指定した論理アドレスの順序)になるように並び替えられる。 The read buffer memory 43 temporarily stores the read data read from the non-volatile memory 5. Specifically, in the read buffer memory 43, the read data are rearranged in an order suitable for the information processing device 2 (order of logical addresses designated by the information processing device 2).

プロセッサ44は、内部バスIBを経由して、コントローラ4全体の動作を制御する。 The processor 44 controls the operation of the entire controller 4 via the internal bus IB.

プロセッサ44は、例えば、メモリ45Bに格納されている制御プログラムPを一時的にメモリ45Aに格納し、このメモリ45Aに格納されている制御プログラムPを実行する。これにより、例えば、プロセッサ44は、書き込み制御部441、読み出し制御部442、ガーベージコレクション制御部443、初期化部444、アドレス変換部445としての機能を実現する。なお、上記の書き込み制御部441、読み出し制御部442、ガーベージコレクション制御部443、初期化部444、アドレス変換部445は、自由に組み合わせてもよく、分離してもよい。例えば、初期化部444とアドレス変換部445とは組み合わせてもよい。書き込み制御部441、読み出し制御部442、ガーベージコレクション制御部443、初期化部444、アドレス変換部445は、ハードウェアによって実現されてもよい。 For example, the processor 44 temporarily stores the control program P stored in the memory 45B in the memory 45A, and executes the control program P stored in the memory 45A. Thereby, for example, the processor 44 realizes the functions as a write control unit 441, a read control unit 442, a garbage collection control unit 443, an initialization unit 444, and an address translation unit 445. The write control unit 441, the read control unit 442, the garbage collection control unit 443, the initialization unit 444, and the address translation unit 445 may be freely combined or separated. For example, the initialization unit 444 and the address translation unit 445 may be combined. The write control unit 441, the read control unit 442, the garbage collection control unit 443, the initialization unit 444, and the address translation unit 445 may be realized by hardware.

プロセッサ44は、例えば、CPU(Central Processing Unit)、MPU(Micro-Processing Unit)、又は、DSP(Digital Signal Processor)などであってもよい。 The processor 44 may be, for example, a CPU (Central Processing Unit), an MPU (Micro-Processing Unit), a DSP (Digital Signal Processor), or the like.

書き込み制御部441は、例えば、通信インタフェース制御部41から書き込みバッファメモリ42を経由して不揮発性メモリコントローラ46までデータなどを送るための制御を行う。 The write control unit 441 controls, for example, to send data or the like from the communication interface control unit 41 to the non-volatile memory controller 46 via the write buffer memory 42.

より具体的には、書き込み制御部441は、コマンド制御部412からの書き込みコマンドにしたがって、アドレス変換部445を用いて論理アドレスを物理アドレスに変換し、書き込みコマンドと書き込みデータと物理アドレスとを不揮発性メモリコントローラ46に送る。 More specifically, the write control unit 441 converts the logical address into a physical address by using the address conversion unit 445 according to the write command from the command control unit 412, and the write command, the write data, and the physical address are non-volatile. Send to the sex memory controller 46.

読み出し制御部442は、例えば、不揮発性メモリコントローラ46から読み出しバッファメモリ43を経由して通信インタフェース制御部41までデータなどを送るための制御を行う。 The read control unit 442 controls, for example, to send data or the like from the non-volatile memory controller 46 to the communication interface control unit 41 via the read buffer memory 43.

より具体的には、読み出し制御部442は、コマンド制御部412からの読み出しコマンドにしたがって、アドレス変換部445を用いて論理アドレスを物理アドレスに変換し、読み出しコマンドと物理アドレスとを不揮発性メモリコントローラ46に送り、不揮発性メモリコントローラ46から物理アドレスに対応する読み出しデータを受け、読み出しデータを読み出しバッファメモリ43、通信インタフェース制御部41経由で情報処理装置2へ送信する。 More specifically, the read control unit 442 converts the logical address into a physical address by using the address conversion unit 445 according to the read command from the command control unit 412, and the read command and the physical address are converted into a non-volatile memory controller. It is sent to 46, receives read data corresponding to a physical address from the non-volatile memory controller 46, and sends the read data to the information processing apparatus 2 via the read buffer memory 43 and the communication interface control unit 41.

ガーベージコレクション制御部443は、不揮発性メモリ5のガーベージコレクションを行う。例えば、ガーベージコレクション制御部443は、書き込み制御部441、読み出し制御部442、不揮発性メモリコントローラ46と協働することにより、不揮発性メモリ5のガーベージコレクションを行うとしてもよい。本実施形態において、ガーベージコレクションとは、メモリの不要な領域を解放する処理とする。ここで、不揮発性メモリ5がNAND型フラッシュメモリの場合には、メモリの不要な領域を解放するためにブロックの消去を行う必要がある。そのため、ガーベージコレクション対象のブロックにおける利用可能性のある有効データは、他のブロックに移動される。したがって、不揮発性メモリ5がNAND型フラッシュメモリの場合には、ガーベージコレクションとともにコンパクションが実行される傾向にある。 The garbage collection control unit 443 performs garbage collection of the non-volatile memory 5. For example, the garbage collection control unit 443 may perform garbage collection of the non-volatile memory 5 by cooperating with the write control unit 441, the read control unit 442, and the non-volatile memory controller 46. In the present embodiment, the garbage collection is a process of releasing an unnecessary area of the memory. Here, when the non-volatile memory 5 is a NAND flash memory, it is necessary to erase the block in order to release an unnecessary area of the memory. Therefore, valid data that may be available in the block subject to garbage collection is moved to another block. Therefore, when the non-volatile memory 5 is a NAND flash memory, compaction tends to be executed together with garbage collection.

メモリ45Aは、例えば、プロセッサ44の作業用メモリとして使用される主記憶装置を含み、プロセッサ44からの制御に従う。メモリ45Aは、例えばプロセッサ44による処理対象のプログラム、データ、情報などを格納する。本実施形態では、メモリ45AがDRAM(Dynamic Random Access Memory)である場合について説明するが、例えばその他の揮発性メモリであってもよく、又は、SRAM(Static Random Access Memory)などのような不揮発性メモリであってもよい。 The memory 45A includes, for example, a main storage device used as a working memory of the processor 44 and is subject to control from the processor 44. The memory 45A stores, for example, a program, data, information, and the like to be processed by the processor 44. In the present embodiment, the case where the memory 45A is a DRAM (Dynamic Random Access Memory) will be described, but for example, other volatile memory may be used, or non-volatile memory such as SRAM (Static Random Access Memory) may be used. It may be memory.

初期化部444は、初期状態の階層的LUT51を生成する。例えば、初期化部444は、不揮発性メモリ5の容量、ネームスペースの容量などのメモリ装置3の設定情報に基づいて、階層的LUT51のネームスペースごとの階層の数、各階層に対応するデータ容量、階層間のリンク関係を決定し、初期状態の階層的LUT51のデータ構造を決定する。例えば、初期化部444は、初期状態の階層的LUT51を不揮発性メモリ5に書き込む。 The initialization unit 444 generates the hierarchical LUT 51 in the initial state. For example, the initialization unit 444 determines the number of layers in each namespace of the hierarchical LUT 51 and the data capacity corresponding to each layer based on the setting information of the memory device 3 such as the capacity of the non-volatile memory 5 and the capacity of the namespace. , The link relationship between the layers is determined, and the data structure of the hierarchical LUT 51 in the initial state is determined. For example, the initialization unit 444 writes the hierarchical LUT 51 in the initial state to the non-volatile memory 5.

初期化部444は、初期状態のアクティブデータマップ52(Active Data Map。以下、ADMという)を生成する。ADMとは、不揮発性メモリ5に格納されているデータが有効であるか無効であるかを管理するデータである。例えば、ADM52は、不揮発性メモリ5に書き込まれているデータの最小単位ごとに、この最小単位のデータが有効である場合を“1”とし、無効である場合を“0”とし、初期状態のADM52を不揮発性メモリ5に書き込む。ADM52の詳細は後で説明する。 The initialization unit 444 generates an active data map 52 (Active Data Map, hereinafter referred to as ADM) in the initial state. The ADM is data that manages whether the data stored in the non-volatile memory 5 is valid or invalid. For example, the ADM 52 sets “1” when the data of the minimum unit is valid and “0” when the data of the minimum unit is invalid for each minimum unit of the data written in the non-volatile memory 5, and is in the initial state. Write the ADM 52 to the non-volatile memory 5. Details of the ADM 52 will be described later.

キャッシュメモリ制御部447は、例えば、読み出し制御部を用いて、不揮発性メモリ5から階層的LUT51の一部又はADM52の一部を読み出し、読み出した階層的LUT51の一部又はADM52の一部をキャッシュメモリ451へ格納する。また、キャッシュメモリ制御部447は、例えば、書き込み制御部441を用いて、キャッシュメモリ451に格納されている階層的LUT51の一部又はADM52の一部を不揮発性メモリ5の階層的LUT51又はADM52へ書き戻す制御を行う。 The cache memory control unit 447 reads, for example, a part of the hierarchical LUT 51 or a part of the ADM 52 from the non-volatile memory 5 by using the read control unit, and caches a part of the read hierarchical LUT 51 or a part of the ADM 52. It is stored in the memory 451. Further, the cache memory control unit 447 uses, for example, the write control unit 441 to transfer a part of the hierarchical LUT 51 or a part of the ADM 52 stored in the cache memory 451 to the hierarchical LUT 51 or the ADM 52 of the non-volatile memory 5. Controls to write back.

なお、キャッシュメモリ制御部447の処理は、アドレス変換部445及びデータマップ管理部446が協働することにより実現されるとしてもよい。この場合、キャッシュメモリ制御部447は省略されてもよい。 The processing of the cache memory control unit 447 may be realized by the cooperation of the address translation unit 445 and the data map management unit 446. In this case, the cache memory control unit 447 may be omitted.

さらに、キャッシュメモリ制御部447は、キャッシュメモリ451に格納されているキャッシュラインを、フリーリスト、クリーンリスト、及び、ダーティリストのいずれに属するかを管理する。本実施形態において、キャッシュラインとは、例えば、キャッシュメモリ451に格納する単位サイズのデータである。フリーリスト、クリーンリスト、及び、ダーティリストの説明は、後述する。 Further, the cache memory control unit 447 manages whether the cache line stored in the cache memory 451 belongs to a free list, a clean list, or a dirty list. In the present embodiment, the cache line is, for example, unit size data stored in the cache memory 451. A description of the free list, clean list, and dirty list will be described later.

アドレス変換部445は、データが書き込まれるごとに、階層的LUT51に対して論理アドレスから物理アドレスまでの変換を階層的に記述する。また、アドレス変換部445は、階層的LUT51を用いて、論理アドレスを物理アドレスに変換する。より具体的には、アドレス変換部445は、階層的LUT51の階層構造にしたがって、キャッシュメモリ451に格納すべき階層的LUT51のうちの一部である部分データを探索し、部分データをキャッシュメモリ451に格納し、キャッシュメモリ451を参照することにより、論理アドレスを物理アドレスに変換する。階層的LUT51の詳細は後で説明する。 The address translation unit 445 hierarchically describes the translation from the logical address to the physical address for the hierarchical LUT 51 each time data is written. Further, the address translation unit 445 uses the hierarchical LUT 51 to translate a logical address into a physical address. More specifically, the address conversion unit 445 searches for partial data that is a part of the hierarchical LUT 51 to be stored in the cache memory 451 according to the hierarchical structure of the hierarchical LUT 51, and the partial data is stored in the cache memory 451. The logical address is converted into a physical address by storing the data in the cache memory 451 and referring to the cache memory 451. Details of the hierarchical LUT 51 will be described later.

データマップ管理部446は、データが書き込まれるごとに、ADM52を更新する。より具体的には、データマップ管理部446は、キャッシュメモリ451に格納されているADM52の一部に対する書き込み及び読み出しを行う。その後、キャッシュメモリ451に格納されているADM52の一部は、不揮発性メモリ5に書き戻される。 The data map management unit 446 updates the ADM 52 every time data is written. More specifically, the data map management unit 446 writes and reads a part of the ADM 52 stored in the cache memory 451. After that, a part of the ADM 52 stored in the cache memory 451 is written back to the non-volatile memory 5.

メモリ45Bは、例えば制御プログラムPなどコントローラ4で用いられるプログラム及びデータを格納する不揮発性の記憶装置を含む。 The memory 45B includes a non-volatile storage device for storing programs and data used in the controller 4, such as the control program P.

不揮発性メモリコントローラ46は、不揮発性メモリ5へのデータなどの書き込み、及び、不揮発性メモリ5からのデータの読み出しを制御する。 The non-volatile memory controller 46 controls writing data to and from the non-volatile memory 5 and reading data from the non-volatile memory 5.

なお、不揮発性メモリコントローラ46は、DMAC(Direct Memory Access Controller)、誤り訂正部、ランダマイザ(又はScrambler)などを含んでいることが望ましい。しかしながら、不揮発性メモリコントローラ46は、これらの機能を含んでいなくてもよい。 The non-volatile memory controller 46 preferably includes a DMAC (Direct Memory Access Controller), an error correction unit, a randomizer (or Scrambler), and the like. However, the non-volatile memory controller 46 does not have to include these functions.

DMACは、内部バスIBを介して、書き込みデータ及び読み出しデータなどを転送する。DMACは、必要に応じて、コントローラ4内の様々な位置に複数設定されてもよい。 The DMAC transfers write data, read data, and the like via the internal bus IB. A plurality of DMACs may be set at various positions in the controller 4, if necessary.

誤り訂正部は、書き込みバッファメモリ42から送信される書き込みデータに誤り訂正符号(例えばError Correcting Code(ECC))を付加する。誤り訂正部は、ECCを用い、必要に応じて不揮発性メモリ5から読み出した読み出しデータを訂正する。 The error correction unit adds an error correction code (for example, Error Correcting Code (ECC)) to the write data transmitted from the write buffer memory 42. The error correction unit uses ECC to correct the read data read from the non-volatile memory 5 as necessary.

ランダマイザは、不揮発性メモリ5へデータを書き込む際に、書き込みデータが不揮発性メモリ5の特定のページ又はワード線方向などに偏らないように、書き込みデータを分散させる(ランダマイズ処理と呼ぶ)。これにより、書き込み回数を平準化でき、不揮発性メモリ5のメモリセルの寿命を長期化できる。そのため、不揮発性メモリ5の信頼性を向上できる。また、ランダマイザは、データ読み出し動作の際に、書き込み時のランダマイズ処理の逆処理を実行し、元のデータを復元する。 When writing data to the non-volatile memory 5, the randomizer distributes the write data so that the write data is not biased toward a specific page or word line direction of the non-volatile memory 5 (referred to as randomization processing). As a result, the number of writes can be leveled, and the life of the memory cell of the non-volatile memory 5 can be extended. Therefore, the reliability of the non-volatile memory 5 can be improved. In addition, the randomizer executes the reverse processing of the randomization processing at the time of writing at the time of the data reading operation, and restores the original data.

メモリ45Aに含まれるキャッシュメモリ451は、不揮発性メモリ5に格納されている階層的LUT51及びADM52のキャッシュデータを格納する。より具体的には、キャッシュメモリ451は、不揮発性メモリ5よりも高速に読み出し及び書き込み可能であり、階層的LUT51のうちの一部である部分データを格納し、ADM52のうちの一部であるマップ部分データを格納する。本実施形態では、階層的LUT51とADM52とは不揮発性メモリ5に書き込まれている。しかしながら、階層的LUT51とADM52とのうちの少なくとも一方は、例えばメモリ45Bなどメモリ装置3に備えられる他の不揮発性メモリに格納されてもよい。また、不揮発性メモリ5は、ユーザデータを格納するメモリ(又はメモリ領域)と、階層的LUT51を格納するメモリ(又はメモリ領域)と、ADM52を格納するメモリ(又はメモリ領域)に区分けされていてもよい。 The cache memory 451 included in the memory 45A stores the cache data of the hierarchical LUT 51 and the ADM 52 stored in the non-volatile memory 5. More specifically, the cache memory 451 is faster read and write than the non-volatile memory 5, stores partial data that is part of the hierarchical LUT 51, and is part of the ADM 52. Stores map partial data. In this embodiment, the hierarchical LUT 51 and the ADM 52 are written in the non-volatile memory 5. However, at least one of the hierarchical LUT 51 and the ADM 52 may be stored in another non-volatile memory provided in the memory device 3, such as the memory 45B. Further, the non-volatile memory 5 is divided into a memory (or a memory area) for storing user data, a memory (or a memory area) for storing the hierarchical LUT 51, and a memory (or a memory area) for storing the ADM 52. May be good.

階層的LUT51が不揮発性メモリ5に格納されている場合、キャッシュメモリ制御部447は、不揮発性メモリ5より階層的LUT51の内容の一部(部分データ)又は全部をキャッシュメモリ451に読み出す。また、キャッシュメモリ制御部447は、書き換えられたキャッシュメモリ451の内容を任意のタイミングで不揮発性メモリ5の階層的LUT51に反映する。 When the hierarchical LUT 51 is stored in the non-volatile memory 5, the cache memory control unit 447 reads a part (partial data) or all of the contents of the hierarchical LUT 51 from the non-volatile memory 5 into the cache memory 451. Further, the cache memory control unit 447 reflects the contents of the rewritten cache memory 451 in the hierarchical LUT 51 of the non-volatile memory 5 at an arbitrary timing.

同様に、ADM52が不揮発性メモリ5に格納されている場合、キャッシュメモリ制御部447は、不揮発性メモリ5よりADM52の内容の一部(マップ部分データ)又は全部をキャッシュメモリ451に読み出す。また、キャッシュメモリ制御部447は、書き換えられたキャッシュメモリ451の内容を任意のタイミングで不揮発性メモリ5のADM52に反映する。 Similarly, when the ADM 52 is stored in the non-volatile memory 5, the cache memory control unit 447 reads a part (map partial data) or the entire contents of the ADM 52 from the non-volatile memory 5 into the cache memory 451. Further, the cache memory control unit 447 reflects the contents of the rewritten cache memory 451 in the ADM 52 of the non-volatile memory 5 at an arbitrary timing.

不揮発性メモリがNAND型フラッシュメモリの場合、LUTは、書き込みデータ又は読み出しデータの論理アドレス(以下、Logical Block Addressing(LBA)とする)と物理アドレス(以下、Physical Block Addressing(PBA)とする)とを関係付けたデータである。 When the non-volatile memory is a NAND flash memory, the LUT has a logical address of write data or read data (hereinafter referred to as Logical Block Addressing (LBA)) and a physical address (hereinafter referred to as Physical Block Addressing (PBA)). It is the data related to.

階層的LUT51は、LUTを階層的に構成したデータである。より具体的には、階層的LUT51は、複数のレイヤを持つ階層構造により、書き込み先又は読み出し先として指定されたLBAと、不揮発性メモリ5の位置を示すPBAとを関連付けている。プロセッサ44は、階層的LUT51を用いることにより、LBAに対応するPBA、又はPBAに対応するLBAを効率よく探索できる。 The hierarchical LUT 51 is data in which the LUT is hierarchically configured. More specifically, the hierarchical LUT 51 associates an LBA designated as a write destination or a read destination with a PBA indicating the position of the non-volatile memory 5 by a hierarchical structure having a plurality of layers. By using the hierarchical LUT 51, the processor 44 can efficiently search for the PBA corresponding to the LBA or the LBA corresponding to the PBA.

階層的LUT51は、テーブル形式のデータ構造を持つとしてもよく、例えばリスト形式などのような他のデータ構造を持つとしてもよい。階層的LUT51は、複数の部分データ(例えばテーブル)を含む。以下において、部分データをフラグメントという。フラグメントとは、断片化したデータとする。複数のフラグメントは、例えば、所定サイズ、すなわち同じサイズである。複数のフラグメントは、複数のレイヤに所属する。複数のレイヤのうちの第1のレイヤに属する第1のフラグメントは、論理アドレスと、第1のレイヤの下位である第2のレイヤに属する複数の第2のフラグメントを参照するための複数の参照先情報(以下、ポインタという)を含む。階層構造における最下位のフラグメントは、論理アドレスと物理アドレスとを含む。最上位レイヤに所属する複数の最上位フラグメントのそれぞれは、複数のネームスペースのそれぞれに対応する。階層的LUT51は、複数のネームスペースの記憶容量に応じて複数のネームスペースの階層数が異なる。例えば、記憶容量の少ないネームスペースの階層数は少なく、記憶容量の多いネームスペースの階層数は多くなる。複数のフラグメントのそれぞれの所定のサイズは、例えば、キャッシュメモリに含まれるキャッシュラインの単位サイズに対応する。階層的LUT51の詳細については、後述する。 The hierarchical LUT 51 may have a data structure in a table format, or may have another data structure such as a list format. The hierarchical LUT 51 includes a plurality of partial data (eg, a table). In the following, partial data will be referred to as fragments. Fragment is fragmented data. The plurality of fragments are, for example, a predetermined size, that is, the same size. Multiple fragments belong to multiple layers. The first fragment belonging to the first layer of the plurality of layers is a logical address and a plurality of references for referencing the plurality of second fragments belonging to the second layer below the first layer. Includes destination information (hereinafter referred to as pointer). The lowest fragment in a hierarchical structure contains a logical address and a physical address. Each of the top-level fragments belonging to the top-level layer corresponds to each of the plurality of namespaces. The hierarchical LUT 51 has a different number of layers of the plurality of namespaces according to the storage capacity of the plurality of namespaces. For example, the number of layers of a namespace having a small storage capacity is small, and the number of layers of a namespace having a large storage capacity is large. Each predetermined size of the plurality of fragments corresponds to, for example, the unit size of the cache line contained in the cache memory. The details of the hierarchical LUT 51 will be described later.

なお、本実施形態において、図1に示したコントローラ4の構成は例示であり、コントローラ4は図1の構成に限定されない。 In this embodiment, the configuration of the controller 4 shown in FIG. 1 is an example, and the controller 4 is not limited to the configuration of FIG.

キャッシュメモリ451は、階層的LUT51及びADM52へのアクセスを高速化するためのキャッシュメモリであり、階層的LUT51及びADM52のうちの一部を格納する。また、キャッシュメモリ451は、書き込み制御部441より書き込みバッファメモリ42を経由して書き換えられてもよく、読み出し制御部442より読み出しバッファメモリ43を経由して読み出されてもよい。 The cache memory 451 is a cache memory for speeding up access to the hierarchical LUT 51 and the ADM 52, and stores a part of the hierarchical LUT 51 and the ADM 52. Further, the cache memory 451 may be rewritten by the write control unit 441 via the write buffer memory 42, or may be read by the read control unit 442 via the read buffer memory 43.

図2は、一般的なLUTとADMを例示する概念図である。この図2及び後述の図3、図8において、キロバイトはKBと表記する。 FIG. 2 is a conceptual diagram illustrating a general LUT and ADM. In FIG. 2 and FIGS. 3 and 8 described later, kilobytes are referred to as KB.

LUT Lは、NAND型フラッシュメモリMのデータのLBAとPBAとを関係付ける。この図2のLUT Lにおいて、LBA Yは、PBA Xに対応する。PBA Xで示されるNAND型フラッシュメモリMの領域には、4KBのデータDが書き込まれる。なお、PBAに書き込み可能なデータの量は、任意に変更可能である。 The LUT L relates the LBA and PBA of the data of the NAND flash memory M. In the LUT L of FIG. 2, LBA Y corresponds to PBA X. 4KB of data D is written in the area of the NAND flash memory M represented by PBA X. The amount of data that can be written to the PBA can be changed arbitrarily.

ここで、例えば、LUT Lの各LBAに格納されるPBAのサイズを32ビット(4バイト)とすると、4KBのデータDに対応するPBA Xを格納するために、LUT Lは4バイトのデータ量を必要とする。すなわち、NAND型フラッシュメモリMのサイズの1/1000のサイズのLUTが必要となる。 Here, for example, assuming that the size of the PBA stored in each LBA of the LUT L is 32 bits (4 bytes), the LUT L has a data amount of 4 bytes in order to store the PBA X corresponding to the data D of 4 KB. Needs. That is, a LUT having a size 1/1000 of the size of the NAND flash memory M is required.

LUT Lは、NAND型フラッシュメモリMの使用開始時(通電時)に、NAND型フラッシュメモリMからDRAM上にキャッシュされる必要がある。このため、NAND型フラッシュメモリMの容量に比例してLUT Lのサイズが大きくなると、キャッシュに要する時間も増大する。例えば1TB程度のNAND型フラッシュメモリMを搭載したメモリ装置では、LUT Lのサイズは1キガバイト(GB)程度となり、メモリ装置3の電源ON時にDRAM上にLUT Lが読み出されるまで数十秒程度要する。 The LUT L needs to be cached on the DRAM from the NAND flash memory M at the start of use (when energized) of the NAND flash memory M. Therefore, as the size of the LUT L increases in proportion to the capacity of the NAND flash memory M, the time required for caching also increases. For example, in a memory device equipped with a NAND flash memory M of about 1 TB, the size of the LUT L is about 1 Kigabyte (GB), and it takes about several tens of seconds until the LUT L is read out on the DRAM when the power of the memory device 3 is turned on. ..

本実施形態では、LUTを階層化し、DRAM上に一度に読み出されるLUTのサイズを小さくする。これにより、LUTの読み出しに要する時間を短縮する。また、LUTの探索を効率化することで、アクセス速度の高速化を行う。 In this embodiment, the LUTs are layered and the size of the LUTs read out on the DRAM at one time is reduced. This reduces the time required to read the LUT. In addition, the access speed is increased by improving the efficiency of the LUT search.

ADM Aは、NAND型フラッシュメモリMに格納されているデータが有効であるか無効であるかを管理するデータである。この図2の例において、ADM Aは、NAND型フラッシュメモリMに格納されている4KBのデータごとに、1ビットのフラグ情報を用いて、有効であるか無効であるかを管理する。例えば、NAND型フラッシュメモリMに格納されているデータDと、ADM Aのフラグ情報Bとが対応し、フラグ情報Bは有効であることを示す“1”であるため、データDは有効データである。 The ADM A is data for managing whether the data stored in the NAND flash memory M is valid or invalid. In the example of FIG. 2, the ADM A manages whether the data is valid or invalid by using 1-bit flag information for each 4KB of data stored in the NAND flash memory M. For example, since the data D stored in the NAND flash memory M corresponds to the flag information B of the ADM A and the flag information B is “1” indicating that the flag information B is valid, the data D is valid data. be.

図3は、本実施形態に係る階層的LUT51の構成を例示する概念図である。この図3及び図8において、メガバイトはMBと表記する。 FIG. 3 is a conceptual diagram illustrating the configuration of the hierarchical LUT 51 according to the present embodiment. In FIGS. 3 and 8, megabytes are referred to as MB.

ネームスペースとは、不揮発性メモリ5に含まれる複数のブロックを区分けすることによって得られるメモリのスペースである。ある範囲のメモリ領域ごとにネームスペースを割り当てることにより、少なくとも2つのメモリ領域で論理アドレスが重複する場合であっても、ネームスペースIDと論理アドレスとを用いて適切なメモリ領域の適切なデータをアクセスすることができる。ネームスペースを識別可能とすることで、ネームスペースごとに独立してLBAを割り当て可能であり、複数のネームスペースでLBAが重複した場合であっても適切にアクセス可能である。したがって、情報処理システム1では、異なるネームスペースへのアクセスは、例えば異なるデバイスへのアクセスと同様に扱われる。 The namespace is a memory space obtained by dividing a plurality of blocks included in the non-volatile memory 5. By allocating a namespace for each memory area in a certain range, even if the logical address overlaps in at least two memory areas, the namespace ID and the logical address are used to obtain appropriate data in the appropriate memory area. Can be accessed. By making the namespaces identifiable, LBAs can be assigned independently for each namespace, and even if LBAs are duplicated in a plurality of namespaces, they can be appropriately accessed. Therefore, in the information processing system 1, access to different namespaces is treated in the same way as access to different devices, for example.

本実施形態において、階層的LUT51は、例えば、LUTを複数のレイヤを持つ階層構造で記述する。本実施形態では、階層的LUT51は、ネームスペースNS1~NSn(nは2以上の自然数)に分かれている。階層的LUT51におけるネームスペースNS1~NSnごとの階層の深さは、ネームスペースNS1~NSnのサイズに応じて決定される。 In the present embodiment, the hierarchical LUT 51 describes, for example, a LUT in a hierarchical structure having a plurality of layers. In this embodiment, the hierarchical LUT 51 is divided into namespaces NS1 to NSn (n is a natural number of 2 or more). The depth of the hierarchy for each namespace NS1 to NSn in the hierarchical LUT 51 is determined according to the size of the namespace NS1 to NSn.

階層的LUT51の第1の(最上位の)レイヤL1は、不揮発性メモリ5のPBAの範囲を、ネームスペースNS1~NSnのサイズに応じてネームスペースNS1~NSnに対応するn個のフラグメント(エレメントグループ)Li1に割り当てる。第1のレイヤL1のn個のフラグメントLi1のそれぞれは、さらに複数のエレメントC1を含む。 The first (top) layer L1 of the hierarchical LUT 51 covers the range of the PBA of the non-volatile memory 5 by n fragments (elements) corresponding to the namespaces NS1 to NSn according to the size of the namespaces NS1 to NSn. Group) Assign to Li1. Each of the n fragments Li1 of the first layer L1 further contains a plurality of elements C1.

第2のレイヤL2は、第1のレイヤL1でn個に区分けされたPBAの範囲のそれぞれを、さらにm個のフラグメントLi2に区分けする。m個は、例えば、第1のレイヤL1のフラグメントLi1に含まれる複数のエレメントC1の数としてもよい。第2のレイヤL2のフラグメントLi2のそれぞれは、さらに複数のエレメントC2を含む。第1のレイヤL1のフラグメントLi1に含まれる複数のエレメントC1のそれぞれは、第2のレイヤL2のフラグメントLi2に対応付けられており、例えば、対応す下位のフラグメントLi2を示すポインタを含む。 The second layer L2 further divides each of the ranges of PBA divided into n pieces in the first layer L1 into m pieces of fragments Li2. The m number may be, for example, the number of a plurality of elements C1 contained in the fragment Li1 of the first layer L1. Each of the fragments Li2 of the second layer L2 further contains a plurality of elements C2. Each of the plurality of elements C1 included in the fragment Li1 of the first layer L1 is associated with the fragment Li2 of the second layer L2, and includes, for example, a pointer indicating the corresponding lower fragment Li2.

第3のレイヤL3は、第2のレイヤL2でm個に区分けされたPBAの範囲のそれぞれを、さらにl個のフラグメントLi3に区分けする。l個は、例えば、第2のレイヤL2のフラグメントLi2に含まれる複数のエレメントC2の数としてもよい。第3のレイヤL3のフラグメントLi3のそれぞれは、さらに複数のエレメントC3を含む。第2のレイヤL2のフラグメントLi2に含まれる複数のエレメントC2のそれぞれは、第3のレイヤL3のフラグメントLi3に対応付けられており、例えば、対応する下位のフラグメントLi3を示すポインタを含む。 The third layer L3 further divides each of the ranges of PBA divided into m pieces in the second layer L2 into l fragments Li3. The number of l may be, for example, the number of a plurality of elements C2 contained in the fragment Li2 of the second layer L2. Each of the fragments Li3 of the third layer L3 further contains a plurality of elements C3. Each of the plurality of elements C2 included in the fragment Li2 of the second layer L2 is associated with the fragment Li3 of the third layer L3, and includes, for example, a pointer indicating the corresponding lower fragment Li3.

第4のレイヤL4は、第3のレイヤL3でl個に区分けされたPBAの範囲のそれぞれを、さらにk個のフラグメントLi4に区分けする。k個は、例えば、第3のレイヤL3のフラグメントLi3に含まれる複数のエレメントC3の数としてもよい。第4のレイヤL4のフラグメントLi4のそれぞれは、さらに複数のエレメントC4を含む。第3のレイヤL3のフラグメントLi3に含まれる複数のエレメントC3のそれぞれは、第4のレイヤL4のフラグメントLi4に対応付けられており、例えば、対応する下位のフラグメントLi4を示すポインタを含む。 The fourth layer L4 further divides each of the range of PBA divided into l by the third layer L3 into k fragments Li4. The k number may be, for example, the number of a plurality of elements C3 contained in the fragment Li3 of the third layer L3. Each of the fragments Li4 of the fourth layer L4 further contains a plurality of elements C4. Each of the plurality of elements C3 included in the fragment Li3 of the third layer L3 is associated with the fragment Li4 of the fourth layer L4, and includes, for example, a pointer indicating the corresponding lower fragment Li4.

階層的LUT51は、最下位の第4のレイヤL4において区分けされたPBAにより、LBAに対応するPBAを特定する。 The hierarchical LUT 51 identifies the PBA corresponding to the LBA by the PBA divided in the lowermost fourth layer L4.

このように、第1のレイヤL1におけるエレメントC1が第2のレイヤL2におけるフラグメントLi2を示し、第2のレイヤL2におけるエレメントC2が第3のレイヤL3におけるフラグメントLi3を示し、第3のレイヤL3におけるエレメントC3が第4のレイヤL4におけるフラグメントLi4を示すことで、階層的LUT51が形成される。 Thus, the element C1 in the first layer L1 shows the fragment Li2 in the second layer L2, the element C2 in the second layer L2 shows the fragment Li3 in the third layer L3, and the third layer L3. The element C3 represents the fragment Li4 in the fourth layer L4 to form a hierarchical LUT 51.

第1乃至第4のレイヤL1~L4に所属する1つのフラグメントに含まれるエレメントの数は、同じでもよく、例えば、32個としてもよい。 The number of elements contained in one fragment belonging to the first to fourth layers L1 to L4 may be the same, and may be, for example, 32.

この図3では、レイヤの数が4つの場合を図示している。しかしながら、レイヤの数は2以上であればよい。 FIG. 3 illustrates the case where the number of layers is four. However, the number of layers may be 2 or more.

階層的LUT51で用いられるPBAのサイズは、上記図2の例と同様に、32ビットとしてもよい。また、階層的LUT51で用いられるPBAのサイズは、例えばメモリ装置3のアドレスバスの幅と等しくてもよい。 The size of the PBA used in the hierarchical LUT 51 may be 32 bits as in the example of FIG. 2 above. Further, the size of the PBA used in the hierarchical LUT 51 may be equal to, for example, the width of the address bus of the memory device 3.

例えば、各フラグメントLi1~Li4は、対応する下位レイヤのフラグメントに対応するPBA(先頭の物理アドレス)又は対応するアクセス対象データのPBA、及び、対応するネームスペースID(ネームスペース名)、対応する論理アドレス、管理するPBAの範囲(グレイン:Grain)を含む。 For example, each fragment Li1 to Li4 has a PBA (first physical address) corresponding to the corresponding lower layer fragment, a PBA of the corresponding access target data, a corresponding namespace ID (namespace name), and a corresponding logic. Includes address and range of PBA to manage (Grain).

例えば、各フラグメントLi1~Li4のエレメントC1~C4が管理するPBAの範囲が、NAND型フラッシュメモリにおいて扱われるページ単位(例えば4KB)と一致している場合は、各エレメントC1~C4にはアクセス対象データのPBAが格納される。例えば、下位のレイヤが存在する場合は、各エレメントC1~C4には下位のレイヤのフラグメントに対応するPBA(例えば先頭の物理アドレス)が格納される。なお、下位のレイヤのフラグメントに対応するPBAは、他の形式のアドレスで表記されてもよい。 For example, if the range of PBA managed by the elements C1 to C4 of each fragment Li1 to Li4 matches the page unit (for example, 4KB) handled in the NAND flash memory, each element C1 to C4 is to be accessed. The PBA of the data is stored. For example, when a lower layer exists, each element C1 to C4 stores a PBA (for example, the first physical address) corresponding to the fragment of the lower layer. The PBA corresponding to the fragment of the lower layer may be represented by an address in another format.

階層的LUT51において、上位のレイヤのフラグメントは複数のエレメントを含む。上位のレイヤのフラグメントに含まれる各エレメントによって管理されるPBAの範囲は、下位のレイヤのフラグメントによって管理されるPBAの範囲に対応しており、この下位のレイヤのフラグメントはさらに複数のエレメントを含む。例えば、上位のレイヤのフラグメントに含まれる各エレメントには、下位のレイヤのフラグメントに対応するPBAが格納される。これにより、上位のレイヤと下位のレイヤとが関連付けられる。 In the hierarchical LUT 51, the fragment of the upper layer contains a plurality of elements. The range of PBA managed by each element contained in the fragment of the upper layer corresponds to the range of PBA managed by the fragment of the lower layer, and the fragment of this lower layer contains more than one element. .. For example, each element contained in the fragment of the upper layer stores the PBA corresponding to the fragment of the lower layer. As a result, the upper layer and the lower layer are associated with each other.

さらに下位のレイヤにおいても、同様に、例えば、下位のレイヤの各フラグメントに含まれる各エレメントには、さらに下位のレイヤのフラグメントに対応するPBAが格納される。 Similarly, in the lower layer, for example, each element included in each fragment of the lower layer stores the PBA corresponding to the fragment of the lower layer.

そして、1個のエレメントで管理するPBAの範囲が4KBとなった場合に、当該エレメントには、不揮発性メモリ5に書き込まれているデータに対応するPBAが格納される。 When the range of PBA managed by one element is 4KB, the PBA corresponding to the data written in the non-volatile memory 5 is stored in the element.

なお、階層的LUT51に含まれるフラグメントLi1~Li4のそれぞれは、複数の参照先のデータが不揮発性メモリ5に連続して配置されている場合に、複数の参照先のデータのうちの先頭を示す先頭ポインタを含み、この複数の参照先のデータのうち先頭ではない他のポインタを省略してもよい。これにより、階層的LUT51のサイズを削減可能であり、キャッシュメモリ451の使用量を削減可能である。例えば、第1のレイヤに所属する第1のフラグメントに含まれる複数のエレメントによって参照される複数のPBAが連続する場合、第1のフラグメントに含まれる第1のエレメントは、複数のPBAのうちの先頭のPBAを含む。第1のフラグメントに含まれる他のエレメント、及び、第1のフラグメントの下位である第2のレイヤに所属する第2のフラグメントは、省略可能である。これにより、階層的LUT51における第1のレイヤ及び第2のレイヤで必要とされるデータ量を削減することができる。書き込み制御部441又は読み出し制御部442は、例えば、第2のレイヤに所属する第2のフラグメントが省略されている場合に、この第1のレイヤに所属する第1のフラグメントに含まれる第1のエレメントが連続する複数のPBAを参照していると判断する。これにより、書き込み制御部441又は読み出し制御部442は、例えば、バースト転送などを用いて、不揮発性メモリ5に格納されている連続するデータに対するアクセス速度を向上することができる。 It should be noted that each of the fragments Li1 to Li4 included in the hierarchical LUT 51 indicates the head of the data of the plurality of reference destinations when the data of the plurality of reference destinations are continuously arranged in the non-volatile memory 5. Other pointers that include the start pointer and are not the start of the data of the plurality of references may be omitted. As a result, the size of the hierarchical LUT 51 can be reduced, and the amount of the cache memory 451 used can be reduced. For example, when a plurality of PBAs referenced by a plurality of elements included in the first fragment belonging to the first layer are continuous, the first element contained in the first fragment is among the plurality of PBAs. Includes leading PBA. Other elements included in the first fragment and the second fragment belonging to the second layer below the first fragment can be omitted. As a result, the amount of data required for the first layer and the second layer in the hierarchical LUT 51 can be reduced. The write control unit 441 or the read control unit 442 may be included in the first fragment belonging to the first layer, for example, when the second fragment belonging to the second layer is omitted. It is determined that the element refers to a plurality of consecutive PBAs. As a result, the write control unit 441 or the read control unit 442 can improve the access speed to the continuous data stored in the non-volatile memory 5 by using, for example, burst transfer.

図3の例をより詳しく説明する。第1のレイヤL1は、n個のネームスペースNS1~NSnのそれぞれに対応するn個のフラグメントLi1に区分けされる。1つのフラグメントLi1は、4GB分のPBAに対応する。1つのフラグメントLi1は、さらに32個のエレメントC1を含む。1つのエレメントC1は、128MB分のPBAに対応する。すなわち、フラグメントLi1のエレメントC1に対応するPBAの範囲は、128MBである。エレメントC1によって管理されるPBAの範囲は、NAND型フラッシュメモリにおいて扱われるデータの最小単位、例えばページ単位(例えば4KB)よりも大きい。このため、各エレメントC1に対して第2のレイヤL2のフラグメントLi2が生成され、各エレメントC1には第2のレイヤL2の対応するフラグメントLi2の先頭を示
すアドレスが格納される。
The example of FIG. 3 will be described in more detail. The first layer L1 is divided into n fragments Li1 corresponding to each of the n namespaces NS1 to NSn. One fragment Li1 corresponds to 4 GB of PBA. One fragment Li1 further contains 32 elements C1. One element C1 corresponds to 128MB of PBA. That is, the range of PBA corresponding to the element C1 of the fragment Li1 is 128MB. The range of PBA managed by the element C1 is larger than the minimum unit of data handled in the NAND flash memory, for example, page unit (for example, 4KB). Therefore, the fragment Li2 of the second layer L2 is generated for each element C1, and the address indicating the head of the corresponding fragment Li2 of the second layer L2 is stored in each element C1.

第2のレイヤL2は、第1のレイヤL1のエレメントC1に対応するフラグメントLi2に区分けされる。1つのフラグメントLi2は、128MB分のPBAに対応する。1つのフラグメントLi2は、さらに32個のエレメントC2を含む。1つのエレメントC2は、4MB分のPBAに対応する。すなわち、フラグメントLi2のエレメントC2に対応するPBAの範囲は、4MBである。エレメントC2によって管理されるPBAの範囲は、NAND型フラッシュメモリにおいて扱われるページ単位4KBよりも大きい。このため、各エレメントC2に対して第3のレイヤL3のフラグメントLi3が生成され、各エレメントC2には第3のレイヤL3の対応するフラグメントLi3の先頭を示すアドレスが格納される。 The second layer L2 is divided into the fragment Li2 corresponding to the element C1 of the first layer L1. One fragment Li2 corresponds to 128 MB of PBA. One fragment Li2 further contains 32 elements C2. One element C2 corresponds to 4MB of PBA. That is, the range of PBA corresponding to the element C2 of the fragment Li2 is 4MB. The range of PBA managed by the element C2 is larger than the page unit 4KB handled in the NAND flash memory. Therefore, the fragment Li3 of the third layer L3 is generated for each element C2, and the address indicating the head of the corresponding fragment Li3 of the third layer L3 is stored in each element C2.

第3のレイヤL3は、第2のレイヤL2のエレメントC2に対応するフラグメントLi3に区分けされる。1つのフラグメントLi3は、4MB分のPBAに対応する。1つのフラグメントLi3は、さらに32個のエレメントC3を含む。1つのエレメントC3は、128KB分のPBAに対応する。すなわち、フラグメントLi3のエレメントC3に対応するPBAの範囲は、128KBである。エレメントC3によって管理されるPBAの範囲は、NAND型フラッシュメモリにおいて扱われるページ単位4KBよりも大きい。このため、各エレメントC3に対して第4のレイヤL4のフラグメントLi4が生成され、各エレメントC3には第4のレイヤL4の対応するフラグメントLi4の先頭を示すアドレスが格納される。 The third layer L3 is divided into fragments Li3 corresponding to the element C2 of the second layer L2. One fragment Li3 corresponds to 4MB of PBA. One fragment Li3 further contains 32 elements C3. One element C3 corresponds to 128KB of PBA. That is, the range of PBA corresponding to the element C3 of the fragment Li3 is 128KB. The range of PBA managed by the element C3 is larger than the page unit 4KB handled in the NAND flash memory. Therefore, the fragment Li4 of the fourth layer L4 is generated for each element C3, and the address indicating the head of the corresponding fragment Li4 of the fourth layer L4 is stored in each element C3.

第4のレイヤL4は、第3のレイヤL3のエレメントC3に対応するフラグメントLi4に区分けされる。1つのフラグメントLi4は、128KB分のPBAに対応する。1つのフラグメントLi4は、さらに32個のエレメントC4を含む。1つのエレメントC4は、4KB分のPBAに対応する。すなわち、フラグメントLi4のエレメントC4に対応するPBAの範囲は、4KBである。エレメントC4によって管理されるPBAの範囲は、NAND型フラッシュメモリにおいて扱われるページ単位4KBと同等である。このため、各エレメントC4には、データを示すPBAが格納される。 The fourth layer L4 is divided into fragments Li4 corresponding to the element C3 of the third layer L3. One fragment Li4 corresponds to 128KB of PBA. One fragment Li4 further contains 32 elements C4. One element C4 corresponds to 4KB of PBA. That is, the range of PBA corresponding to the element C4 of the fragment Li4 is 4KB. The range of PBA managed by the element C4 is equivalent to the page unit 4KB handled in the NAND flash memory. Therefore, each element C4 stores a PBA indicating data.

例えば、1つのフラグメントLi4に格納される複数のPBAが連続する場合には、フラグメントLi4は省略されてもよい。フラグメントLi4の参照元のエレメントC3は、エレメントC3に対応するPBAの範囲である128KB分のデータの先頭のPBAを含む。すなわち、あるフラグメントに含まれる複数のエレメントに対応するPBAの範囲と同じサイズのデータが連続するPBAに対応づけられている場合、このあるフラグメントの下位のフラグメントは省略可能であり、あるフラグメントに含まれるエレメントは、このあるデータの先頭のPBAを含む。 For example, when a plurality of PBAs stored in one fragment Li4 are continuous, the fragment Li4 may be omitted. The element C3 that is the reference source of the fragment Li4 includes the PBA at the beginning of the data for 128 KB, which is the range of the PBA corresponding to the element C3. That is, when data of the same size as the range of PBA corresponding to a plurality of elements contained in a certain fragment is associated with a continuous PBA, the lower fragment of this certain fragment can be omitted and is included in the certain fragment. The element to be included contains the PBA at the beginning of this certain data.

なお、ネームスペースNS1~NSnごとに、対応するPBAの範囲の大きさ(対応するメモリ領域のサイズ)が異なり、例えば階層的LUT51で管理されるネームスペースNS1~NSnごとのPBAの数は異なるとしてもよい。この場合、ネームスペースNS1~NSnごとに、例えばネームスペースNS1~NSnのサイズに応じて、レイヤの数が異なるとしてもよい。例えば、ネームスペースNS1では128GBに相当するPBAをレイヤ数5で管理し、ネームスペースNS2では64GBに相当するPBAをレイヤ数6で管理してもよい。 It should be noted that the size of the corresponding PBA range (corresponding memory area size) is different for each namespace NS1 to NSn, and for example, the number of PBAs for each namespace NS1 to NSn managed by the hierarchical LUT 51 is different. May be good. In this case, the number of layers may be different for each of the namespaces NS1 to NSn, for example, depending on the size of the namespaces NS1 to NSn. For example, in the namespace NS1, the PBA corresponding to 128 GB may be managed by the number of layers 5, and in the namespace NS2, the PBA corresponding to 64 GB may be managed by the number of layers 6.

本実施形態では、1つのネームスペース内においては、フラグメントに含まれるエレメントの数は同じであることが望ましいが、フラグメントに含まれるエレメントの数はレイヤごとに異なってもよい。 In the present embodiment, it is desirable that the number of elements contained in the fragment is the same in one namespace, but the number of elements contained in the fragment may be different for each layer.

図4は、本実施形態に係る階層的LUT51のフラグメントのデータフォーマットを例示するデータ構造図である。具体的には、図4は、図3に示すような、上位のレイヤの1フラグメントが下位のレイヤの32個のフラグメントに対応する階層的LUT51の1つのフラグメントを例示している。 FIG. 4 is a data structure diagram illustrating the data format of the fragment of the hierarchical LUT 51 according to the present embodiment. Specifically, FIG. 4 illustrates one fragment of the hierarchical LUT 51, as shown in FIG. 3, where one fragment of the upper layer corresponds to 32 fragments of the lower layer.

キャッシュメモリ451は、階層的LUT51の一部を、キャッシュライン単位で格納する。以下では、階層的LUT51のフラグメントをLUTフラグメントとする。LUTフラグメントに対応するキャッシュラインをLUTキャッシュラインとする。 The cache memory 451 stores a part of the hierarchical LUT 51 in units of cache lines. In the following, the fragment of the hierarchical LUT 51 will be referred to as a LUT fragment. The cache line corresponding to the LUT fragment is referred to as a LUT cache line.

キャッシュメモリ451で更新されたデータは、キャッシュライン単位で、不揮発性メモリ5に書き戻される。 The data updated in the cache memory 451 is written back to the non-volatile memory 5 in units of cache lines.

LUTフラグメント及びLUTキャッシュラインは、各レイヤL1~L4におけるLUTフラグメントLi1~Li4のいずれかに対応する。LUTフラグメント及びLUTキャッシュラインは、例えば、PBA格納部C_1~C_32とLBA格納部C_33と管理データ格納部C_34とを含む。 The LUT fragment and the LUT cache line correspond to any of the LUT fragments Li1 to Li4 in each layer L1 to L4. The LUT fragment and the LUT cache line include, for example, PBA storage units C_1 to C_32, LBA storage units C_33, and management data storage units C_34.

PBA格納部C_1~C_32は、エレメントに対応する。PBA格納部C_1~C_32は、下位のレイヤのLUTフラグメントに対応するPBA又はデータの格納位置を示すPBAを格納する。上記図2で説明したように、1つのPBAは例えば32ビットで表される。なお、各PBAには、例えば8ビットの管理データMD1が付されてもよい。各管理データMD1は、例えば、PBA格納部C_1~C_32のそれぞれに格納されているPBAが、下位のレイヤのLUTフラグメントに対応するPBAであるか(この場合、さらに不揮発性メモリ5上のPBAであるか、又は、キャッシュメモリ451上のPBAであるか)、又は、データの格納位置を示すPBAであるかを管理してもよい。PBA格納部C_1~C_32のそれぞれのサイズは、それぞれPBAのサイズと管理データMD1のサイズとを足した40ビットとしてもよく、PBA格納部C_1~C_32の合計サイズは160バイトとしてもよい。 The PBA storage units C_1 to C_32 correspond to elements. The PBA storage units C_1 to C_32 store the PBA corresponding to the LUT fragment of the lower layer or the PBA indicating the storage position of the data. As described in FIG. 2 above, one PBA is represented by, for example, 32 bits. For example, 8-bit management data MD1 may be attached to each PBA. In each management data MD1, for example, whether the PBA stored in each of the PBA storage units C_1 to C_32 is a PBA corresponding to the LUT fragment of the lower layer (in this case, in the PBA on the non-volatile memory 5). It may be managed whether it is a PBA on the cache memory 451) or a PBA indicating a storage position of data. The size of each of the PBA storage units C_1 to C_32 may be 40 bits, which is the sum of the size of the PBA and the size of the management data MD1, and the total size of the PBA storage units C_1 to C_32 may be 160 bytes.

LBA格納部C_33は、PBA格納部C_1(すなわち、LUTフラグメントで管理する先頭のPBA)に対応するLBAを格納する。 The LBA storage unit C_33 stores the LBA corresponding to the PBA storage unit C_1 (that is, the first PBA managed by the LUT fragment).

管理データ格納部C_34は、当該LUTフラグメントが属するネームスペースID、及び、当該LUTフラグメントの管理するPBAの範囲を格納する。 The management data storage unit C_34 stores the namespace ID to which the LUT fragment belongs and the range of the PBA managed by the LUT fragment.

なお、管理データ格納部C_34は、他の情報を格納してもよい。例えば、管理データ格納部C_34は、当該LUTフラグメントが属するレイヤのIDを格納してもよい。 The management data storage unit C_34 may store other information. For example, the management data storage unit C_34 may store the ID of the layer to which the LUT fragment belongs.

各LUTフラグメントが例えばメモリ45Aのキャッシュメモリ451上に格納される場合、各LUTキャッシュラインは、LUTフラグメントに加えて、キャッシュメモリ451において互いに関連付けるべきLUTキャッシュラインを示すポインタをさらに含むとしてもよい。より具体的には、LUTキャッシュラインは、このLUTキャッシュラインの前に参照されるキャッシュラインを示す前ポインタ格納部C_N-1と、当該LUTキャッシュラインの次に参照されるキャッシュラインを示す次ポインタ格納部C_Nとを含むとしてもよい。このように、キャッシュメモリ451上に格納されているLUTキャッシュラインが参照すべき前後のキャッシュラインへのポインタを含むことにより、キャッシュメモリ451に対するアクセスを高速化することができ、連続的なアクセスを実現することができる。なお、LUTキャッシュラインは、他の管理データを含むとしてもよい。 When each LUT fragment is stored, for example, on the cache memory 451 of the memory 45A, each LUT cache line may further include, in addition to the LUT fragment, a pointer indicating a LUT cache line to be associated with each other in the cache memory 451. More specifically, the LUT cache line has a front pointer storage unit C_N-1 indicating a cache line referenced before the LUT cache line and a next pointer indicating a cache line referenced next to the LUT cache line. It may include the storage unit C_N. In this way, by including the pointers to the cache lines before and after the LUT cache line stored in the cache memory 451 to be referred to, the access to the cache memory 451 can be speeded up, and continuous access can be performed. It can be realized. The LUT cache line may include other management data.

例えば、あるキャッシュラインが後述のフリーリストFLに含まれる場合、このキャッシュラインの次アドレス格納部C_Nは、同じフリーリストFLに含まれる他のキャッシュラインを示すポインタを含むとしてもよい。あるキャッシュラインが後述のダーティリストDLに含まれる場合、このキャッシュラインの次アドレス格納部C_Nは、同じダーティリストDLに含まれる他のキャッシュラインを示すポインタを含むとしてもよい。あるキャッシュラインが後述のクリーンリストCLに含まれる場合、このキャッシュラインの次アドレス格納部C_Nは、同じクリーンリストCLに含まれる他のキャッシュラインを示すポインタを含むとしてもよい。 For example, when a certain cache line is included in the free list FL described later, the next address storage unit C_N of this cache line may include a pointer indicating another cache line included in the same free list FL. When a certain cache line is included in the dirty list DL described later, the next address storage unit C_N of this cache line may include a pointer indicating another cache line included in the same dirty list DL. When a cache line is included in the clean list CL described later, the next address storage unit C_N of this cache line may include a pointer indicating another cache line included in the same clean list CL.

本実施形態においては、次に参照すべきキャッシュラインのアドレスはPBAで表されるとして説明するが、他の形式のアドレスで表されてもよい。また、本実施形態において、前ポインタ格納部C_N-1と、次ポインタ格納部C_Nとは、PBAを格納するとして説明するが、他の形式のアドレスを格納してもよい。 In the present embodiment, the address of the cache line to be referred to next will be described as being represented by PBA, but may be represented by an address of another form. Further, in the present embodiment, the front pointer storage unit C_N-1 and the next pointer storage unit C_N will be described as storing the PBA, but addresses of other formats may be stored.

LUTフラグメント及びLUTキャッシュラインは、全て図4に示すフォーマットに従って構成されるのが望ましい。この場合、各LUTフラグメントのサイズは固定長(例えば、168バイト)とすることができる。各LUTキャッシュラインのサイズは固定長(例えば、188バイト)とすることができる。しかしながら、各LUTフラグメント及び各LUTキャッシュラインは、レイヤごとに異なるフォーマットに従って構成されてもよい。 It is desirable that the LUT fragment and the LUT cache line are all configured according to the format shown in FIG. In this case, the size of each LUT fragment can be fixed length (eg, 168 bytes). The size of each LUT cache line can be fixed length (eg, 188 bytes). However, each LUT fragment and each LUT cache line may be configured according to a different format for each layer.

図5は、本実施形態に係るADM52のフラグメントのデータフォーマットを例示するデータ構造図である。 FIG. 5 is a data structure diagram illustrating the data format of the fragment of ADM52 according to the present embodiment.

キャッシュメモリ451は、ADM52の一部を、キャッシュライン単位で格納する。以下では、ADM52のフラグメントを、ADMフラグメントとする。ADMフラグメントに対応するキャッシュラインをADMキャッシュラインとする。 The cache memory 451 stores a part of the ADM 52 in units of cache lines. In the following, the fragment of ADM52 will be referred to as an ADM fragment. The cache line corresponding to the ADM fragment is referred to as an ADM cache line.

ADMフラグメント及びADMキャッシュラインは、例えば、マップ格納部D_1~D_40とPBA格納部D_42とを含む。 The ADM fragment and the ADM cache line include, for example, map storage units D_1 to D_40 and PBA storage units D_42.

マップ格納部D_1~D_40は、不揮発性メモリ5に格納される4KBのデータごとに、各データの有効又は無効を管理するビットを格納する。例えば、マップ格納部D_1~D_40の合計サイズが160バイト(=1280ビット)とすると、1つのADMフラグメント及びADMキャッシュラインで不揮発性メモリ5に格納される1280個分の4KBのデータの有効又は無効を管理可能である。 The map storage units D_1 to D_40 store bits for managing the validity or invalidity of each data for each of the 4KB data stored in the non-volatile memory 5. For example, assuming that the total size of the map storage units D_1 to D_40 is 160 bytes (= 1280 bits), valid or invalid data for 1280 4KB data stored in the non-volatile memory 5 in one ADM fragment and ADM cache line. Can be managed.

PBA格納部D_42は、マップ格納部D_1のPBA(すなわち、このADMフラグメントで管理する先頭のPBA)を格納する。 The PBA storage unit D_42 stores the PBA of the map storage unit D_1 (that is, the first PBA managed by this ADM fragment).

ADMキャッシュラインは、前述のLUTキャッシュラインと同様に、キャッシュメモリ451において互いに関連付けるべきキャッシュラインを示すポインタをさらに含むとしてもよい。より具体的には、ADMキャッシュラインは、当該ADMキャッシュラインの前に参照されるキャッシュラインを示す前ポインタ格納部D_N-1と、当該ADMキャッシュラインの次に参照されるキャッシュラインを示す次ポインタ格納部D_Nとを含む。なお、ADMキャッシュラインは、他の管理データを含んでもよい。 The ADM cache line may further include a pointer indicating a cache line to be associated with each other in the cache memory 451 as in the above-mentioned LUT cache line. More specifically, the ADM cache line includes a front pointer storage unit D_N-1 indicating a cache line referenced before the ADM cache line and a next pointer indicating a cache line referenced next to the ADM cache line. It includes a storage unit D_N. The ADM cache line may include other management data.

また、ADMフラグメント及びADMキャッシュラインは、全て図5に示すフォーマットに従って構成され、LUTフラグメント及びLUTキャッシュラインと同じサイズの固定長とされるのが望ましい。すなわち、ADMフラグメントのサイズはLUTフラグメントと同じ168バイト、ADMキャッシュラインのサイズはLUTキャッシュラインのサイズと同じ188バイトとすることが好ましい。 Further, it is desirable that the ADM fragment and the ADM cache line are all configured according to the format shown in FIG. 5 and have a fixed length of the same size as the LUT fragment and the LUT cache line. That is, it is preferable that the size of the ADM fragment is 168 bytes, which is the same as the LUT fragment, and the size of the ADM cache line is 188 bytes, which is the same as the size of the LUT cache line.

図6は、本実施形態に係るキャッシュメモリ451から不揮発性メモリ5への書き戻し時に使用されるデータフォーマットを例示するデータ構造図である。 FIG. 6 is a data structure diagram illustrating a data format used at the time of writing back from the cache memory 451 to the non-volatile memory 5 according to the present embodiment.

上述のように、キャッシュメモリ451でLUTキャッシュライン又はADMキャッシュラインが更新されると、更新されたLUTキャッシュラインに含まれるLUTフラグメント又は更新されたADMキャッシュラインに含まれるADMフラグメントが、不揮発性メモリ5に書き戻される。 As described above, when the LUT cache line or the ADM cache line is updated in the cache memory 451 the LUT fragment contained in the updated LUT cache line or the ADM fragment contained in the updated ADM cache line becomes a non-volatile memory. Written back to 5.

本実施形態では、LUTフラグメント及びADMフラグメントのサイズは全て同じであるため、書き込み制御部441は、LUTフラグメント及びADMフラグメントを効率的に不揮発性メモリ5へ書き戻すことができる。 In the present embodiment, since the sizes of the LUT fragment and the ADM fragment are all the same, the write control unit 441 can efficiently write the LUT fragment and the ADM fragment back to the non-volatile memory 5.

具体的には、例えば、上記図4及び図5に示すように、不揮発性メモリ5上へ書き戻されるLUTフラグメントのサイズは、レイヤに依存することなく、全て168バイトである。また、ADMフラグメントのサイズはLUTフラグメントのサイズと同じ168バイトである。ここで、例えば、図6に示すようにキャッシュメモリ451から不揮発性メモリ5へ書き戻しを行うデータ単位(以下、書き戻し単位とする)を512バイトとすると、1つの書き戻し単位は、キャッシュメモリ451に格納されているLUTフラグメントとADMフラグメントのうちから選択された任意の3つのフラグメントFG_1~FG_3を含むことができる。書き戻し単位からフラグメントFG_1~FG_3を除いた余りサイズは8バイトとなる。8バイトは、書き戻し単位(512バイト)に対して十分小さい値である。さらに、例えばNAND型フラッシュメモリのページサイズは512バイトの整数倍が一般的であるため、ページサイズに対しても余りサイズは十分小さい値となる。したがって、図6のデータフォーマットを用いることにより、書き戻し時に不揮発性メモリ5に書き込まれるページの容量の無駄を抑え、効率的なキャッシュラインの書き戻しを行うことができる。 Specifically, for example, as shown in FIGS. 4 and 5, the size of the LUT fragment written back onto the non-volatile memory 5 is 168 bytes, regardless of the layer. Also, the size of the ADM fragment is 168 bytes, which is the same as the size of the LUT fragment. Here, for example, assuming that the data unit for writing back from the cache memory 451 to the non-volatile memory 5 (hereinafter referred to as the write-back unit) is 512 bytes as shown in FIG. 6, one write-back unit is the cache memory. Any three fragments FG_1 to FG_3 selected from the LUT fragment and the ADM fragment stored in 451 can be included. The remainder size excluding the fragments FG_1 to FG_3 from the write-back unit is 8 bytes. 8 bytes is a sufficiently small value for the write-back unit (512 bytes). Further, for example, the page size of the NAND flash memory is generally an integral multiple of 512 bytes, so that the size is sufficiently smaller than the page size. Therefore, by using the data format of FIG. 6, it is possible to suppress waste of the capacity of the page written to the non-volatile memory 5 at the time of writing back, and to efficiently write back the cache line.

なお、1つの書き戻し単位は、書き戻し単位の余りサイズ(8バイト)を用いた管理データMD2を含むとしてもよい。例えば、管理データMD2は、1つの書き戻し単位に格納される3つのフラグメントの種類を表してもよい。 In addition, one write-back unit may include the management data MD2 using the remainder size (8 bytes) of the write-back unit. For example, the management data MD2 may represent the types of three fragments stored in one write-back unit.

また、書き戻し単位は、512バイトに限られない。書き戻し単位は、例えば、1KBであってもよく、2KBであってもよい。しかしながら、書き戻し単位は、512バイトの倍数であることが望ましい。 Further, the write-back unit is not limited to 512 bytes. The write-back unit may be, for example, 1 KB or 2 KB. However, the write-back unit is preferably a multiple of 512 bytes.

また、不揮発性メモリコントローラ46と不揮発性メモリ5との間で、LUTフラグメントとADMフラグメントとのうちのいずれかであるフラグメントの送受信を行う場合、ECC(Error-Correcting Code)を含むフラグメントを送受信してもよい。この場合、例えば、1つの書き戻し単位に含まれるフラグメントの数と、フラグメントのサイズとを調整することにより、複数個のフラグメントに対して無駄なくECCを付することができ、フラグメントの送受信を効率的に行うことができる。 Further, when transmitting and receiving a fragment that is either a LUT fragment or an ADM fragment between the non-volatile memory controller 46 and the non-volatile memory 5, a fragment including ECC (Error-Correcting Code) is transmitted and received. You may. In this case, for example, by adjusting the number of fragments included in one write-back unit and the size of the fragments, ECC can be attached to a plurality of fragments without waste, and the transmission / reception of fragments is efficient. Can be done.

図7は、本実施形態に係るPBAの探索処理を例示するフローチャートである。 FIG. 7 is a flowchart illustrating the PBA search process according to the present embodiment.

PBA探索処理とは、具体的には、プロセッサ44のアドレス変換部445が、階層的LUT51を用いて指定されたLBAをPBAに変換する処理である。 Specifically, the PBA search process is a process in which the address conversion unit 445 of the processor 44 converts the designated LBA into the PBA by using the hierarchical LUT 51.

なお、階層的LUT51は、あらかじめプロセッサ44の初期化部444及び書き込み処理におけるアドレス変換部445などにより生成され、不揮発性メモリ5に格納されている。 The hierarchical LUT 51 is generated in advance by the initialization unit 444 of the processor 44, the address translation unit 445 in the write process, and the like, and is stored in the non-volatile memory 5.

ステップS701において、キャッシュメモリ制御部447は、不揮発性メモリコントローラ46を経由し、不揮発性メモリ5に格納されている階層的LUT51の第1のレイヤL1のLUTフラグメントLi1を読み出し、LUTフラグメントLi1をメモリ45A内のキャッシュメモリ451へ格納する。LUTフラグメントLi1の読み出しは、例えばメモリ装置3の起動時に行われてもよい。また、LUTフラグメントLi1の読み出しは、情報処理装置2によって指定されたネームスペースIDに基づいて行われるとしてもよい。 In step S701, the cache memory control unit 447 reads the LUT fragment Li1 of the first layer L1 of the hierarchical LUT 51 stored in the non-volatile memory 5 via the non-volatile memory controller 46, and stores the LUT fragment Li1 in the memory. It is stored in the cache memory 451 in 45A. The reading of the LUT fragment Li1 may be performed, for example, at the time of starting the memory device 3. Further, the reading of the LUT fragment Li1 may be performed based on the namespace ID specified by the information processing apparatus 2.

ステップS702において、アドレス変換部445は、読み出されたLUTフラグメントLi1に対して、指定されたLBAに対応するPBA格納部を探索し、該当するPBA格納部に格納されているPBAを読み出す。 In step S702, the address translation unit 445 searches for the PBA storage unit corresponding to the designated LBA for the read LUT fragment Li1, and reads out the PBA stored in the corresponding PBA storage unit.

ステップS703において、アドレス変換部445は、ステップS702で読み出したPBAが下位のレイヤのLUTフラグメントを示すPBAであるか否かを判断する。 In step S703, the address translation unit 445 determines whether or not the PBA read in step S702 is a PBA indicating a LUT fragment of a lower layer.

読み出したPBAが下位のレイヤのLUTフラグメントを示すPBAでない場合は、アドレス変換部445は、ステップS705において、読み出したPBAが指定されたLBAに対応するアドレスであるとし、探索処理を終了する。 If the read PBA is not a PBA indicating a LUT fragment of a lower layer, the address translation unit 445 assumes that the read PBA is an address corresponding to the designated LBA in step S705, and ends the search process.

読み出したPBAが下位のレイヤのLUTフラグメントを示すPBAである場合は、キャッシュメモリ制御部447は、ステップS704において、読み出したPBAに対応する下位のレイヤのLUTフラグメントを読み出す。キャッシュメモリ制御部447は、クリーンリストCLに所属するいずれかのキャッシュラインの次ポインタ格納部C_Nに、キャッシュメモリ451へ格納される下位のレイヤのLUTフラグメントに対応するLUTキャッシュラインを示すポインタを格納することで、下位のレイヤのLUTフラグメントに対応するLUTキャッシュラインがクリーンリストCLに所属することを表す。キャッシュメモリ制御部447は、下位のレイヤのLUTフラグメントに対応するLUTキャッシュラインの前ポインタ格納部C_N-1に、クリーンリストCLに所属するキャッシュラインを示すポインタを格納する。その後、処理はステップS702に戻る。 When the read PBA is a PBA indicating a LUT fragment of a lower layer, the cache memory control unit 447 reads the LUT fragment of the lower layer corresponding to the read PBA in step S704. The cache memory control unit 447 stores a pointer indicating the LUT cache line corresponding to the LUT fragment of the lower layer stored in the cache memory 451 in the next pointer storage unit C_N of any cache line belonging to the clean list CL. This indicates that the LUT cache line corresponding to the LUT fragment of the lower layer belongs to the clean list CL. The cache memory control unit 447 stores a pointer indicating a cache line belonging to the clean list CL in the front pointer storage unit C_N-1 of the LUT cache line corresponding to the LUT fragment of the lower layer. After that, the process returns to step S702.

なお、ステップS704において、ステップS703で読み出された下位のレイヤのフラグメントの参照先が不揮発性メモリ5内のPBAを指す場合は、キャッシュメモリ制御部447は、不揮発性メモリ5の階層的LUT51より当該下位のフラグメントを読み出し、読み出した下位のフラグメントをメモリ45A内のキャッシュメモリ451へ格納する。ステップS703で読み出された下位のレイヤのフラグメントの参照先がキャッシュメモリ451内のPBAを指す場合は、キャッシュメモリ制御部447による不揮発性メモリ5の階層的LUT51からメモリ45A内のキャッシュメモリ451への読み出し処理は不要である。 In step S704, when the reference destination of the fragment of the lower layer read in step S703 points to the PBA in the non-volatile memory 5, the cache memory control unit 447 is referred to by the hierarchical LUT 51 of the non-volatile memory 5. The lower fragment is read, and the read lower fragment is stored in the cache memory 451 in the memory 45A. When the reference destination of the fragment of the lower layer read in step S703 points to the PBA in the cache memory 451 from the hierarchical LUT 51 of the non-volatile memory 5 by the cache memory control unit 447 to the cache memory 451 in the memory 45A. No read processing is required.

図8は、本実施形態に係るPBAの探索処理におけるキャッシュラインの関係を例示するブロック図である。図8の階層的LUT51の構成は、図3に示す階層的LUT51の構成と同じである。 FIG. 8 is a block diagram illustrating the relationship between cache lines in the PBA search process according to the present embodiment. The configuration of the hierarchical LUT 51 of FIG. 8 is the same as the configuration of the hierarchical LUT 51 shown in FIG.

この図8では、第1のレイヤL1から第4のレイヤL4へ向けて、LUTキャッシュラインCLi1,CLi2(1),CLi3(2),CLi4(20)と読み出す状態を例示している。 FIG. 8 illustrates a state in which the LUT cache lines CLi1, CLi2 (1), CLi3 (2), and CLi4 (20) are read from the first layer L1 to the fourth layer L4.

第1のレイヤL1において、LUTフラグメントLi1に対応するLUTキャッシュラインCLi1は、PBA格納部C1_1~C1_32を含む。PBA格納部C1_1~C1_32は、それぞれ、128MBのPBAの範囲に対応する。PBA格納部C1_1~C1_32は、それぞれ、第2のレイヤL2の32個のLUTフラグメントLi2に対応するPBAを格納する。この図8において、PBA格納部C1_1~C1_32は、それぞれ、第2のレイヤL2におけるLUTキャッシュラインCLi2(1)~CLi2(32)に対応するPBAを含む。 In the first layer L1, the LUT cache line CLi1 corresponding to the LUT fragment Li1 includes PBA storage units C1_1 to C1_32. Each of the PBA storage units C1-1 to C1_32 corresponds to a range of 128 MB of PBA. The PBA storage units C1-1 to C1_32 each store the PBA corresponding to the 32 LUT fragments Li2 of the second layer L2. In FIG. 8, the PBA storage units C1-1 to C1_32 include PBAs corresponding to the LUT cache lines CLi2 (1) to CLi2 (32) in the second layer L2, respectively.

第2のレイヤL2において、LUTフラグメントLi2に対応するLUTキャッシュラインCLi2(1)は、PBA格納部C2(1)_1~C2(1)_32を含む。PBA格納部C2(1)_1~C2(1)_32は、それぞれ、4MBのPBAの範囲に対応する。PBA格納部C2(1)_1~C2(1)_32は、それぞれ、第3のレイヤL3の32個のLUTフラグメントLi3に対応するPBAを格納する。この図8において、PBA格納部C2(1)_1~C2(1)_32は、それぞれ、第3のレイヤL3におけるLUTキャッシュラインCLi3(1)~CLi3(32)に対応するPBAを含む。 In the second layer L2, the LUT cache line CLi2 (1) corresponding to the LUT fragment Li2 includes PBA storage units C2 (1) _1 to C2 (1) _32. Each of the PBA storage units C2 (1) _1 to C2 (1) _32 corresponds to a PBA range of 4 MB. The PBA storage units C2 (1) _1 to C2 (1) _32 each store the PBA corresponding to the 32 LUT fragments Li3 of the third layer L3. In FIG. 8, the PBA storage units C2 (1) _1 to C2 (1) _32 each include a PBA corresponding to the LUT cache lines CLi3 (1) to CLi3 (32) in the third layer L3.

第3のレイヤL3において、LUTフラグメントLi3に対応するLUTキャッシュラインCLi3(2)は、PBA格納部C3(2)_1~C3(2)_32を含む。PBA格納部C3(2)_1~C3(2)_32は、それぞれ、128KBのPBAの範囲に対応する。PBA格納部C3(2)_1~C3(2)_32は、それぞれ、第4のレイヤL4の32個のLUTフラグメントLi4に対応するPBAを格納する。この図8において、PBA格納部C3(2)_1~C3(2)_32は、それぞれ、第4のレイヤL4におけるLUTキャッシュラインCLi4(1)~CLi4(32)に対応するPBAを含む。 In the third layer L3, the LUT cache line CLi3 (2) corresponding to the LUT fragment Li3 includes PBA storage units C3 (2) _1 to C3 (2) _32. Each of the PBA storage units C3 (2) _1 to C3 (2) _32 corresponds to a PBA range of 128 KB. The PBA storage units C3 (2) _1 to C3 (2) _32 each store the PBA corresponding to the 32 LUT fragments Li4 of the fourth layer L4. In FIG. 8, the PBA storage units C3 (2) _1 to C3 (2) _32 include PBAs corresponding to the LUT cache lines CLi4 (1) to CLi4 (32) in the fourth layer L4, respectively.

第4のレイヤL4において、LUTフラグメントLi4に対応するLUTキャッシュラインCLi4(20)は、PBA格納部C4(20)_1~C4(20)_32を含む。PBA格納部C4(20)_1~C4(20)_32は、それぞれ、4KBのPBAの範囲に対応する。PBA格納部C4(20)_1~C4(20)_32は、それぞれ、データに対応するPBAを格納する。 In the fourth layer L4, the LUT cache line CLi4 (20) corresponding to the LUT fragment Li4 includes PBA storage units C4 (20) _1 to C4 (20) _32. Each of the PBA storage units C4 (20) _1 to C4 (20) _32 corresponds to the range of PBA of 4KB. Each of the PBA storage units C4 (20) _1 to C4 (20) _32 stores the PBA corresponding to the data.

まず、キャッシュメモリ制御部447は、例えば、ネームスペースID、LBA Y、先頭アドレス及びオフセット値に基づいて、第1のレイヤL1のLUTフラグメントLi1を不揮発性メモリ5から読み出し、LUTフラグメントLi1に対応するLUTキャッシュラインCLi1をキャッシュメモリ451に格納する。 First, the cache memory control unit 447 reads the LUT fragment Li1 of the first layer L1 from the non-volatile memory 5 based on, for example, the namespace ID, the LBA Y, the start address, and the offset value, and corresponds to the LUT fragment Li1. The LUT cache line CLi1 is stored in the cache memory 451.

アドレス変換部445は、例えば、LBA Y、先頭アドレス及びオフセット値に基づいて、LUTフラグメントLi1に対応するLUTキャッシュラインCLi1の中から、対応するPBA格納部C1_1に格納されているPBAを読み出す。 The address translation unit 445 reads, for example, the PBA stored in the corresponding PBA storage unit C1-1 from the LUT cache line CLi1 corresponding to the LUT fragment Li1 based on the LBA Y, the start address, and the offset value.

キャッシュメモリ制御部447は、PBA格納部C1_1に格納されている値が第2のレイヤL2のLUTフラグメントLi2を示すPBAであるので、LUTフラグメントLi2を不揮発性メモリ5から読み出し、LUTフラグメントLi2に対応するLUTキャッシュラインCLi2(1)をキャッシュメモリ451に格納する。 Since the value stored in the PBA storage unit C1-1 is the PBA indicating the LUT fragment Li2 of the second layer L2, the cache memory control unit 447 reads the LUT fragment Li2 from the non-volatile memory 5 and corresponds to the LUT fragment Li2. The LUT cache line CLi2 (1) to be cached is stored in the cache memory 451.

アドレス変換部445は、LBA Yを含むLBAの範囲が割り当てられるPBA格納部C2(1)_2を探索し、PBA格納部C2(1)_2に格納されているPBAを読み出す。 The address translation unit 445 searches for the PBA storage unit C2 (1) _2 to which the range of the LBA including the LBA Y is assigned, and reads out the PBA stored in the PBA storage unit C2 (1) _2.

キャッシュメモリ制御部447は、PBA格納部C2(1)_2に格納されている値が第3のレイヤL3のLUTフラグメントLi3を示すPBAであるので、LUTフラグメントLi3を不揮発性メモリ5から読み出し、LUTフラグメントLi3に対応するLUTキャッシュラインCLi3(2)をキャッシュメモリ451に格納する。 Since the value stored in the PBA storage unit C2 (1) _2 is the PBA indicating the LUT fragment Li3 of the third layer L3, the cache memory control unit 447 reads the LUT fragment Li3 from the non-volatile memory 5 and LUTs. The LUT cache line CLi3 (2) corresponding to the fragment Li3 is stored in the cache memory 451.

アドレス変換部445は、LUTキャッシュラインCLi3(2)から、LBA Yを含むLBAの範囲が割り当てられるPBA格納部C3(2)_20を探索し、PBA格納部C3(2)_20に格納されているPBAを読み出す。 The address translation unit 445 searches the PBA storage unit C3 (2) _20 to which the range of the LBA including the LBA Y is assigned from the LUT cache line CLi3 (2), and stores the PBA storage unit C3 (2) _20. Read the PBA.

キャッシュメモリ制御部447は、PBA格納部C3(2)_20に格納されている値が第4のレイヤL4のLUTフラグメントLi4を示すPBAであるので、LUTフラグメントLi4を不揮発性メモリ5から読み出し、LUTフラグメントLi4に対応するLUTキャッシュラインCLi4(20)をキャッシュメモリ451に格納する。 Since the value stored in the PBA storage unit C3 (2) _20 is the PBA indicating the LUT fragment Li4 of the fourth layer L4, the cache memory control unit 447 reads the LUT fragment Li4 from the non-volatile memory 5 and LUTs. The LUT cache line CLi4 (20) corresponding to the fragment Li4 is stored in the cache memory 451.

アドレス変換部445は、LUTキャッシュラインCLi4(20)から、LBA Yを含むLBAの範囲が割り当てられるPBA格納部C4(20)_31を探索し、PBA格納部C4(20)_31に格納されているPBA Xを読み出す。PBA格納部C4(20)_31に格納されているPBA Xは、LUTキャッシュラインではなく、データを示す。このため、アドレス変換部445は、LBA Yに対応するPBA Xを特定することができる。 The address translation unit 445 searches the PBA storage unit C4 (20) _31 to which the range of the LBA including the LBA Y is assigned from the LUT cache line CLi4 (20), and stores the PBA storage unit C4 (20) _31. Read PBA X. The PBA X stored in the PBA storage unit C4 (20) _31 indicates data, not a LUT cache line. Therefore, the address translation unit 445 can specify the PBA X corresponding to the LBA Y.

図9は、本実施形態に係るキャッシュメモリ451のリスト構造を例示するデータ構造図である。 FIG. 9 is a data structure diagram illustrating the list structure of the cache memory 451 according to the present embodiment.

本実施形態において、キャッシュラインは、LUTキャッシュラインでもよく、ADMキャッシュラインでもよい。 In the present embodiment, the cache line may be a LUT cache line or an ADM cache line.

キャッシュメモリ制御部447は、階層的LUT51のLUTフラグメントをLUTキャッシュラインとしてキャッシュメモリ451上に格納する場合、又は、ADM52のADMフラグメントをADMキャッシュラインとしてキャッシュメモリ451上に格納する場合、上記図4及び図5で説明したように、キャッシュメモリ451上に格納されたキャッシュラインを連結してリスト構造を生成する。 When the cache memory control unit 447 stores the LUT fragment of the hierarchical LUT 51 on the cache memory 451 as a LUT cache line, or when the ADM fragment of the ADM 52 is stored on the cache memory 451 as an ADM cache line, FIG. 4 above. And as described with reference to FIG. 5, the cache lines stored in the cache memory 451 are concatenated to generate a list structure.

本実施形態において、キャッシュメモリ451は、フリーリストFL、ダーティリストDL、クリーンリストCLを含む。なお、LUTキャッシュラインとADMキャッシュラインとが異なるリストで管理されることが望ましい。この場合、LUTキャッシュラインを管理するリストとADMキャッシュラインを管理するリストとは、同じフォーマットであることが望ましい。 In the present embodiment, the cache memory 451 includes a free list FL, a dirty list DL, and a clean list CL. It is desirable that the LUT cache line and the ADM cache line are managed by different lists. In this case, it is desirable that the list that manages the LUT cache line and the list that manages the ADM cache line have the same format.

図9において、フリーリストFL、ダーティリストDL、クリーンリストCLに属するキャッシュラインの次ポインタ格納部C_Nは、同じリストに属し次に連結されるキャッシュラインのアドレスを格納する。次に連結されるキャッシュラインがない場合、次ポインタ格納部C_Nは省略されてもよい。キャッシュラインの前ポインタ格納部C_N-1は。同じリストに属し前に連結されるキャッシュラインのアドレスを格納する。前に連結されるキャッシュラインがない場合、前ポインタ格納部C_Nは省略されてもよい。 In FIG. 9, the next pointer storage unit C_N of the cache line belonging to the free list FL, the dirty list DL, and the clean list CL stores the address of the cache line belonging to the same list and concatenated next. If there is no cache line to be concatenated next, the next pointer storage unit C_N may be omitted. The front pointer storage unit C_N-1 of the cache line is. Stores the addresses of previously concatenated cache lines that belong to the same list. If there is no cache line to be concatenated before, the front pointer storage unit C_N may be omitted.

フリーリストFLは、クリーンリストCLにもダーティリストDLにも属さない例えば書き換え候補のキャッシュラインFL1~FL3を含む。階層的LUT51又はADM52からキャッシュメモリ451へ格納された直後のキャッシュラインは、フリーリストFLに属する。フリーリストFLに属するキャッシュラインFL1~FL3の並び順は、ランダムでもよい。キャッシュラインFL1の次ポインタ格納部C_N及びキャッシュラインFL3の前ポインタ格納部C_N-1は、キャッシュラインFL2のPBAを格納している。キャッシュラインFL2の次ポインタ格納部C_Nは、キャッシュラインFL3のPBAを格納している。キャッシュラインFL2の前ポインタ格納部C_N-1は、キャッシュラインFL1のPBAを格納している。 The free list FL includes, for example, rewrite candidate cache lines FL1 to FL3 that do not belong to the clean list CL or the dirty list DL. The cache line immediately after being stored in the cache memory 451 from the hierarchical LUT 51 or the ADM 52 belongs to the free list FL. The order of the cache lines FL1 to FL3 belonging to the free list FL may be random. The next pointer storage unit C_N of the cache line FL1 and the front pointer storage unit C_N-1 of the cache line FL3 store the PBA of the cache line FL2. The next pointer storage unit C_N of the cache line FL2 stores the PBA of the cache line FL3. The front pointer storage unit C_N-1 of the cache line FL2 stores the PBA of the cache line FL1.

ダーティリストDLは、例えばキャッシュメモリ451でキャッシュラインが書き換えられたが、書き換えられたキャッシュラインの内容が不揮発性メモリ5の階層的LUT51に反映されていないキャッシュラインDL1,DL2を含む。ダーティリストDLに属するキャッシュラインDL1,DL2の並び順は、ランダムでもよい。キャッシュラインDL1の次ポインタ格納部C_Nは、キャッシュラインDL2のPBAを格納している。キャッシュラインDL2の前ポインタC_N-1は、キャッシュラインDL1のPBAを格納している。 The dirty list DL includes, for example, cache lines DL1 and DL2 in which the cache line is rewritten in the cache memory 451 but the content of the rewritten cache line is not reflected in the hierarchical LUT 51 of the non-volatile memory 5. The order of the cache lines DL1 and DL2 belonging to the dirty list DL may be random. The next pointer storage unit C_N of the cache line DL1 stores the PBA of the cache line DL2. The front pointer C_N-1 of the cache line DL2 stores the PBA of the cache line DL1.

例えば、キャッシュメモリ制御部447は、通信インタフェース制御部41が情報処理装置2などより書き込みコマンドを受信すると、書き込み先のLBAに該当するLUTキャッシュラインをフリーリストFLからダーティリストDLへ切り替える。 For example, when the communication interface control unit 41 receives a write command from the information processing device 2 or the like, the cache memory control unit 447 switches the LUT cache line corresponding to the write destination LBA from the free list FL to the dirty list DL.

ダーティリストDLに属するキャッシュラインDL1,DL2の内容は、不揮発性メモリ5の階層的LUT51又はADM52に反映される(書き込まれる)必要がある。キャッシュメモリ制御部447は、ダーティリストDL内のキャッシュラインDL1,DL2が不揮発性メモリ5へ書き込まれた後は、キャッシュラインDL1,DL2をダーティリストDLで管理する必要がないため、キャッシュラインDL1,DL2をダーティリストDLからクリーンリストCLへ繋ぎ替える。このため、ダーティリストDLに属するキャッシュラインDL1,DL2は、先入れ先出し(Fast In Fast Out:FIFO)方式で、不揮発性メモリ5へ書き込まれ、クリーンリストCLに属するキャッシュラインに変換されることが望ましい。 The contents of the cache lines DL1 and DL2 belonging to the dirty list DL need to be reflected (written) in the hierarchical LUT 51 or ADM 52 of the non-volatile memory 5. Since the cache memory control unit 447 does not need to manage the cache lines DL1 and DL2 by the dirty list DL after the cache lines DL1 and DL2 in the dirty list DL are written to the non-volatile memory 5, the cache memory control unit 447 does not need to manage the cache lines DL1 and DL2 by the dirty list DL. Connect DL2 from dirty list DL to clean list CL. Therefore, it is desirable that the cache lines DL1 and DL2 belonging to the dirty list DL are written to the non-volatile memory 5 by a first-in first-out (Fast In Fast Out: FIFO) method and converted into a cache line belonging to the clean list CL.

例えば、ダーティリストDLは、不揮発性メモリ5への書き込み処理を高速化するために用いられる。 For example, the dirty list DL is used to speed up the writing process to the non-volatile memory 5.

クリーンリストCLは、キャッシュメモリ451と不揮発性メモリ5の階層的LUT51又はADM52とで内容が同じキャッシュラインCL1~CL4を含む。キャッシュラインCL1~CL4は、例えば、キャッシュメモリ451において書き換えられ、不揮発性メモリ5の階層的LUT51に対して反映されたキャッシュラインである。クリーンリストCLに属するキャッシュラインCL1~CL4の並び順は、ランダムでもよい。キャッシュラインCL1の次ポインタ格納部C_N及びキャッシュラインCL3の前ポインタ格納部C_N-1は、キャッシュラインCL2のPBAを格納している。キャッシュラインCL2の次ポインタ格納部C_N及びキャッシュラインCL4の前ポインタ格納部C_N-1は、キャッシュラインCL3のPBAを格納している。キャッシュラインCL2の前ポインタ格納部C_N-1は、キャッシュラインCL1のPBAを格納している。キャッシュラインCL3の次ポインタ格納部C_Nは、キャッシュラインCL4のPBAを格納している。 The clean list CL includes cache lines CL1 to CL4 having the same contents in the hierarchical LUT 51 or ADM 52 of the cache memory 451 and the non-volatile memory 5. The cache lines CL1 to CL4 are, for example, cache lines rewritten in the cache memory 451 and reflected in the hierarchical LUT 51 of the non-volatile memory 5. The order of the cache lines CL1 to CL4 belonging to the clean list CL may be random. The next pointer storage unit C_N of the cache line CL1 and the front pointer storage unit C_N-1 of the cache line CL3 store the PBA of the cache line CL2. The next pointer storage unit C_N of the cache line CL2 and the front pointer storage unit C_N-1 of the cache line CL4 store the PBA of the cache line CL3. The front pointer storage unit C_N-1 of the cache line CL2 stores the PBA of the cache line CL1. The next pointer storage unit C_N of the cache line CL3 stores the PBA of the cache line CL4.

例えば、キャッシュメモリ制御部447は、通信インタフェース制御部41が情報処理装置2などより読み出しコマンドを受信すると、読み出し先のLBAに該当するキャッシュラインをフリーリストFLからクリーンリストCLへ切り替える。 For example, when the communication interface control unit 41 receives a read command from the information processing device 2 or the like, the cache memory control unit 447 switches the cache line corresponding to the read destination LBA from the free list FL to the clean list CL.

クリーンリストCLに属するキャッシュラインCL1~CL4は、不揮発性メモリ5の階層的LUT51の一部と同じ内容であるため、クリーンリストCLに属するキャッシュラインCL1~CL4が失われた場合であっても、キャッシュメモリ451のキャッシュラインCL1~CL4と不揮発性メモリ5に格納されている階層的LUT51又はADM52のデータとの間で不整合は発生しない。このため、例えば、キャッシュメモリ制御部447は、フリーリストFLの合計サイズが一定のしきい値以下に減少した場合、クリーンリストCLのキャッシュラインをフリーリストFLへ移動してもよい。なお、クリーンリストCLは先入れ先出し方式で管理されてもよい。クリーンリストCLの増加又は減少は管理されていなくてもよい。すなわち、リスト数の増加又は減少はランダムに行われてもよい。 Since the cache lines CL1 to CL4 belonging to the clean list CL have the same contents as a part of the hierarchical LUT 51 of the non-volatile memory 5, even if the cache lines CL1 to CL4 belonging to the clean list CL are lost, even if the cache lines CL1 to CL4 belonging to the clean list CL are lost. No inconsistency occurs between the cache lines CL1 to CL4 of the cache memory 451 and the data of the hierarchical LUT 51 or ADM 52 stored in the non-volatile memory 5. Therefore, for example, the cache memory control unit 447 may move the cache line of the clean list CL to the free list FL when the total size of the free list FL decreases to a certain threshold value or less. The clean list CL may be managed by a first-in first-out method. The increase or decrease of clean list CL may not be controlled. That is, the number of lists may be increased or decreased randomly.

以下では、メモリ装置3が読み出しコマンド及び書き込みコマンドを受信した際のキャッシュメモリ451の状態変化の詳細について説明する。 Hereinafter, the details of the state change of the cache memory 451 when the memory device 3 receives the read command and the write command will be described.

図10は、本実施形態に係るキャッシュメモリ451におけるキャッシュラインの状態変化を例示するフローチャートである。 FIG. 10 is a flowchart illustrating a change in the state of the cache line in the cache memory 451 according to the present embodiment.

図11は、本実施形態に係るキャッシュメモリ451におけるキャッシュラインの状態変化を例示するブロック図である。図11は、図10のフローチャートで示される処理を図示する。 FIG. 11 is a block diagram illustrating a change in the state of the cache line in the cache memory 451 according to the present embodiment. FIG. 11 illustrates the process shown in the flowchart of FIG.

ステップS1001において、キャッシュメモリ制御部447は、不揮発性メモリ5から階層的LUT51の一部を読み出し、キャッシュメモリ451にフリーリストFLに属するキャッシュラインFL1~FLxとして格納する。例えば、ステップS1001では、上記図7のステップS701と同様に、階層的LUT51の最上位の第1のレイヤL1のフラグメントLi1に対応するキャッシュラインCLi1がキャッシュメモリ451へ格納される。 In step S1001, the cache memory control unit 447 reads a part of the hierarchical LUT 51 from the non-volatile memory 5 and stores it in the cache memory 451 as cache lines FL1 to FLx belonging to the free list FL. For example, in step S1001, the cache line CLi1 corresponding to the fragment Li1 of the first layer L1 at the highest level of the hierarchical LUT 51 is stored in the cache memory 451 as in step S701 of FIG.

ステップS1002において、キャッシュメモリ制御部447は、情報処理装置2から通信インタフェース制御部41経由で不揮発性メモリ5に対するアクセスコマンドを受信したか否か判断する。書き込みコマンドを受信した場合、処理はステップS1003に進み、読み出しコマンドを受信した場合、処理はステップS1007へ進み、アクセスコマンドを受信しない場合は、処理はステップS1008へ進む。 In step S1002, the cache memory control unit 447 determines whether or not an access command to the non-volatile memory 5 has been received from the information processing device 2 via the communication interface control unit 41. When the write command is received, the process proceeds to step S1003, when the read command is received, the process proceeds to step S1007, and when the access command is not received, the process proceeds to step S1008.

ステップS1003において、アドレス変換部445は、フリーリストFLのキャッシュラインFL1~FLxに対して書き込み先のLBAに対応するPBAを探索する。ここで、階層的LUT51又はキャッシュメモリ451に対する探索処理は、上記図7及び図8で説明した探索処理と同様である。 In step S1003, the address translation unit 445 searches the cache lines FL1 to FLx of the free list FL for the PBA corresponding to the write destination LBA. Here, the search process for the hierarchical LUT 51 or the cache memory 451 is the same as the search process described with reference to FIGS. 7 and 8.

キャッシュメモリ制御部447は、アドレス変換部445によって探索された階層的LUT51のうちキャッシュメモリ451に格納されていないLUTフラグメントを読み出し、読み出したLUTフラグメントをフリーリストFLに属するキャッシュラインFL1~FLxのいずれかとしてキャッシュメモリ451へ格納する。また、キャッシュメモリ制御部447は、ADM52のうち書き込み先のPBAに対応するADMを含むADMフラグメントを読み出し、読み出したADMフラグメントをフリーリストFLに属するキャッシュラインFL1~FLxのいずれかとしてキャッシュメモリ451へ格納する。さらに、キャッシュメモリ制御部447は、アドレス変換部445によりフリーリストFLのキャッシュラインFL1~FLxのうちLUTキャッシュラインが書き換えられた場合は、書き換えられたLUTキャッシュラインを、階層的LUT51に対応するダーティリストLDLへ移動する。同様に、キャッシュメモリ制御部447は、データマップ管理部446によりフリーリストFLのキャッシュラインFL1~FLxのうちADMキャッシュラインが書き換えられた場合は、書き換えられたADMキャッシュラインを、ADM52に対応するダーティリストADLへ移動する。 The cache memory control unit 447 reads a LUT fragment not stored in the cache memory 451 among the hierarchical LUT 51 searched by the address conversion unit 445, and reads the read LUT fragment to any of the cache lines FL1 to FLx belonging to the free list FL. It is stored in the cache memory 451 as a result. Further, the cache memory control unit 447 reads an ADM fragment containing the ADM corresponding to the PBA to be written in the ADM 52, and sets the read ADM fragment as one of the cache lines FL1 to FLx belonging to the free list FL to the cache memory 451. Store. Further, when the LUT cache line among the cache lines FL1 to FLx of the free list FL is rewritten by the address conversion unit 445, the cache memory control unit 447 uses the rewritten LUT cache line as a dirty corresponding to the hierarchical LUT 51. Move to the list LDL. Similarly, when the ADM cache line among the cache lines FL1 to FLx of the free list FL is rewritten by the data map management unit 446, the cache memory control unit 447 uses the rewritten ADM cache line as the dirty corresponding to the ADM 52. Move to the list ADL.

ステップS1004において、キャッシュメモリ制御部447は、ダーティリストLDL,ADLのキャッシュラインDL1~DLy-1,DLy~DLxを不揮発性メモリ5の階層的LUT51及びADL52へ反映させるための一定条件が満たされているか否か判断する。条件は、例えばダーティリストLDL,ADLのサイズが一定のしきい値を超えた場合に満たされてもよい。条件が満たされない場合は、ステップS1002に戻る。条件が満たされた場合は、ステップS1005において、キャッシュメモリ制御部447は、ダーティリストLDL,ADLのキャッシュラインDL1~DLy-1,DLy~DLxを、不揮発性メモリ5の階層的LUT51及びADM52へ反映させる(書き込む)。 In step S1004, the cache memory control unit 447 satisfies certain conditions for reflecting the cache lines DL1 to DLy-1 and DLy to DLx of the dirtylists LDL and ADL to the hierarchical LUT 51 and ADL 52 of the non-volatile memory 5. Judge whether or not. The condition may be satisfied, for example, when the sizes of dirtylists LDL and ADL exceed a certain threshold value. If the condition is not satisfied, the process returns to step S1002. When the condition is satisfied, in step S1005, the cache memory control unit 447 reflects the cache lines DL1 to DLy-1, DLy to DLx of the dirtylists LDL and ADL to the hierarchical LUT 51 and ADM 52 of the non-volatile memory 5. Let (write).

なお、ステップS1004の判断は、ステップS1002で書き込みコマンドがない場合でも、キャッシュメモリ制御部447により定期的に行われてもよい。 The determination in step S1004 may be periodically performed by the cache memory control unit 447 even when there is no write command in step S1002.

ステップS1006において、キャッシュメモリ制御部447は、階層的LUT51への反映が完了したダーティリストLDLのキャッシュラインを、階層的LUT51に対応するクリーンリストLCLへ移動する。キャッシュメモリ制御部447は、ADM52への反映が完了したダーティリストADLのキャッシュラインを、ADM52に対応するクリーンリストACLへ移動する。その後、処理はステップS1002に戻る。 In step S1006, the cache memory control unit 447 moves the cache line of the dirty list LDL that has been reflected in the hierarchical LUT 51 to the clean list LCL corresponding to the hierarchical LUT 51. The cache memory control unit 447 moves the cache line of the dirty list ADL that has been reflected in the ADM 52 to the clean list ACL corresponding to the ADM 52. After that, the process returns to step S1002.

ステップS1007において、アドレス変換部445は、フリーリストFLのキャッシュラインFL1~FLxに対して読み出し先のLBAに対応するPBAを探索する。キャッシュメモリ制御部447は、この探索処理において探索した階層的LUT51のうち、キャッシュメモリ451に格納されていないLUTフラグメントを、キャッシュメモリ451にフリーリストFLに属するキャッシュラインFL1~FLxのいずれかとして格納し、その後クリーンリストLCLへ移動する。また、キャッシュメモリ制御部447は、ADM52から読み出し先のPBAに対応するADMを含むADMフラグメントを読み出し、読み出したADMフラグメントをフリーリストFLに属するキャッシュラインFL1~FLxのいずれかとしてキャッシュメモリ451に格納し、その後クリーンリストACLへ移動する。その後、処理はステップS1002に戻る。 In step S1007, the address translation unit 445 searches the cache lines FL1 to FLx of the free list FL for the PBA corresponding to the read destination LBA. The cache memory control unit 447 stores the LUT fragment not stored in the cache memory 451 among the hierarchical LUTs 51 searched in this search process as one of the cache lines FL1 to FLx belonging to the free list FL in the cache memory 451. Then move to the clean list LCL. Further, the cache memory control unit 447 reads an ADM fragment containing an ADM corresponding to the PBA to be read from the ADM 52, and stores the read ADM fragment in the cache memory 451 as one of the cache lines FL1 to FLx belonging to the free list FL. Then move to the clean list ACL. After that, the process returns to step S1002.

ステップS1008において、キャッシュメモリ制御部447は、フリーリストFLのサイズをチェックする。フリーリストが不足していない場合、処理はステップS1002に戻る。フリーリストFLが不足している場合、ステップS1009において、キャッシュメモリ制御部447は、クリーンリストLCL,ACLのキャッシュラインをフリーリストFLへ移動する。その後、処理はステップS1002に戻る。 In step S1008, the cache memory control unit 447 checks the size of the free list FL. If the free list is not insufficient, the process returns to step S1002. When the free list FL is insufficient, in step S1009, the cache memory control unit 447 moves the cache lines of the clean list LCL and ACL to the free list FL. After that, the process returns to step S1002.

なお、上記の図10の説明では、キャッシュラインがフリーリストFLよりダーティリストLDL,ADLへ移動する例について説明したが、クリーンリストLCL,ACLにおいて書き換えられたキャッシュラインもダーティリストLDL,ADLへ移動可能としてもよい。また、上述の例では、不揮発性メモリ51の階層的LUT51又はADM52から読み出されたLUTフラグメント又はADMフラグメントは、フリーリストFLに属するとしてキャッシュメモリ451に格納されるが、これに代えて、クリーンリストLCL、ACLに属するとしてキャッシュメモリ451に格納されてもよい。 In the above description of FIG. 10, an example in which the cache line moves from the free list FL to the dirty list LDL and ADL has been described, but the cache line rewritten in the clean list LCL and ACL also moves to the dirty list LDL and ADL. It may be possible. Further, in the above example, the LUT fragment or the ADM fragment read from the hierarchical LUT 51 or the ADM 52 of the non-volatile memory 51 is stored in the cache memory 451 as belonging to the free list FL, but instead of this, it is clean. It may be stored in the cache memory 451 as belonging to the list LCL and ACL.

ダーティリストLDL,ADLのキャッシュラインDL1~DLy-1,DLy~DLxは、上述のステップS1004の判断とは関係なく、特定のタイミングで、不揮発性メモリ5内の階層的LUT51又はADM52に反映されてもよい。例えば、メモリ装置3は、メモリ装置3の電源が失われる場合に、ダーティリストLDL,ADLのキャッシュラインDL1~DLy-1,DLy~DLxを階層的LUT51又はADM52へ書き込む時間分の電力を供給する別電源を確保していてもよい。この場合、メモリ装置3の電源が失われるタイミングで当該別電源からメモリ装置3へ電力が供給され、ダーティリストLDL,ADLのキャッシュラインDL1~DLy-1,DLy~DLxは、不揮発性メモリ5の階層的LUT51又はADM52へ書き込まれる。この場合、ダーティリストLDL,ADLのサイズを小さくすることで、確保する別電源の容量を小さくすることができ、メモリ装置3に要するコストを抑えることができる。また、ダーティリストLDL,ADLのサイズを小さくすることにより、別電源からの電源供給時にダーティリストLDL,ADLのキャッシュラインDL1~DLy-1,DLy~DLxを階層的LUT51又はADM52へ反映する時間を短くすることができ、安全性を高めることができる。 The cache lines DL1 to DLy-1 and DLy to DLx of the dirtylists LDL and ADL are reflected in the hierarchical LUT 51 or ADM 52 in the non-volatile memory 5 at a specific timing regardless of the determination in step S1004 described above. May be good. For example, the memory device 3 supplies power for the time required to write the cache lines DL1 to DLy-1, DLy to DLx of the dirtylists LDL and ADL to the hierarchical LUT 51 or ADM 52 when the power supply of the memory device 3 is lost. A separate power supply may be secured. In this case, power is supplied from the other power source to the memory device 3 at the timing when the power supply of the memory device 3 is lost, and the cache lines DL1 to DLy-1 and DLy to DLx of the dirtylists LDL and ADL are the non-volatile memory 5. It is written to the hierarchical LUT 51 or ADM 52. In this case, by reducing the sizes of the dirtylists LDL and ADL, the capacity of the separate power supply to be secured can be reduced, and the cost required for the memory device 3 can be suppressed. Further, by reducing the size of the dirtylists LDL and ADL, the time for reflecting the cache lines DL1 to DLy-1 and DLy to DLx of the dirtylists LDL and ADL to the hierarchical LUT51 or ADM52 when the power is supplied from another power source is increased. It can be shortened and safety can be improved.

ダーティリストLDL,ADLのサイズはしきい値などにより調整可能であるため、ダーティリストLDL,ADLのキャッシュラインDL1~DLy-1,DLy~DLxを階層的LUT51及びADM52へ反映する頻度を調整することができる。これにより、不揮発性メモリ5へのアクセス頻度、メモリ装置3の処理速度、不揮発性メモリ5の寿命を調整することができる。メモリ装置3は、ダーティリストLDL,ADLのサイズを管理し、情報処理装置2などからのコマンドによりダーティリストLDL,ADLのサイズを変化可能であるため、メモリ装置3のコスト、安全性、性能、寿命のバランスを保つことができる。 Since the sizes of dirtylists LDL and ADL can be adjusted by threshold values, etc., the frequency of reflecting the cache lines DL1 to DLy-1 and DLy to DLx of dirtylists LDL and ADL to the hierarchical LUT51 and ADM52 should be adjusted. Can be done. Thereby, the access frequency to the non-volatile memory 5, the processing speed of the memory device 3, and the life of the non-volatile memory 5 can be adjusted. Since the memory device 3 manages the sizes of the dirtylists LDL and ADL and can change the sizes of the dirtylists LDL and ADL by commands from the information processing device 2 and the like, the cost, safety, and performance of the memory device 3 can be determined. You can keep the balance of life.

図12は、本実施形態に係るLUTフラグメントと不揮発性メモリ5のページとの関係を例示するブロック図である。以下では、LUTフラグメント及びLUTキャッシュラインについて説明するが、ADMフラグメント及びADMキャッシュラインについても同様である。この図12では、ページに含まれるフラグメントの全てがLUTフラグメントの場合を例示している。しかしながら、ページに含まれるフラグメントはADMフラグメントでもよい。ページには、LUTフラグメントとADMフラグメントとが混在してもよい。 FIG. 12 is a block diagram illustrating the relationship between the LUT fragment according to the present embodiment and the page of the non-volatile memory 5. Hereinafter, the LUT fragment and the LUT cache line will be described, but the same applies to the ADM fragment and the ADM cache line. FIG. 12 illustrates the case where all the fragments contained in the page are LUT fragments. However, the fragment contained in the page may be an ADM fragment. The page may be a mixture of LUT fragments and ADM fragments.

本実施形態では、階層的LUT51を生成する際に、上述のように全てのレイヤにおいて、LUTフラグメントが同じ数のエレメントを含む。この場合、各LUTフラグメントのサイズは全て同じとなり、各LUTキャッシュラインのサイズは全て同じとなる。LUTフラグメントのサイズを同じとし、LUTキャッシュラインのサイズを同じとすることで、不揮発性メモリ5上で階層的LUT51を効率的に格納することができる。 In this embodiment, when the hierarchical LUT 51 is generated, the LUT fragments include the same number of elements in all layers as described above. In this case, the size of each LUT fragment is the same, and the size of each LUT cache line is the same. By making the size of the LUT fragment the same and the size of the LUT cache line the same, the hierarchical LUT 51 can be efficiently stored on the non-volatile memory 5.

具体的には、例えば、上記図4に示すLUTフラグメント及びLUTキャッシュラインのフォーマットを用いた場合、不揮発性メモリ5上に配置される階層的LUT51の各LUTフラグメントのサイズは、レイヤに依存することなく、全て168バイトとなる。 Specifically, for example, when the LUT fragment and LUT cache line formats shown in FIG. 4 are used, the size of each LUT fragment of the hierarchical LUT 51 arranged on the non-volatile memory 5 depends on the layer. No, all are 168 bytes.

ここで、例えば、図12に示すように不揮発性メモリ5のページサイズを1024バイトとすると、1つのページには6つのLUTフラグメントLiA~LiFが含まれる。この場合、当該ページの余りサイズは16バイトとなり、これは1ページの容量(1024バイト)に対して十分小さい値である。したがって、ページの容量の無駄を抑えつつ、効率的にLUTフラグメントを管理することができる。 Here, for example, assuming that the page size of the non-volatile memory 5 is 1024 bytes as shown in FIG. 12, one page contains six LUT fragments LiA to LiF. In this case, the remainder size of the page is 16 bytes, which is sufficiently small for the capacity of one page (1024 bytes). Therefore, it is possible to efficiently manage LUT fragments while suppressing waste of page capacity.

なお、不揮発性メモリコントローラ46と不揮発性メモリ5との間でLUTフラグメントの送受信を行う場合、ECC(Error-Correcting Code)を含むLUTフラグメントを送受信してもよい。この場合、例えば、1つのページに含まれるLUTフラグメントの数と、LUTフラグメントのサイズとを調整することにより、複数個のLUTフラグメントに対して無駄なくECCを付することができ、LUTフラグメントの送受信を効率的に行うことができる。 When transmitting and receiving a LUT fragment between the non-volatile memory controller 46 and the non-volatile memory 5, a LUT fragment including ECC (Error-Correcting Code) may be transmitted and received. In this case, for example, by adjusting the number of LUT fragments contained in one page and the size of the LUT fragments, ECC can be attached to a plurality of LUT fragments without waste, and the LUT fragments can be transmitted and received. Can be done efficiently.

以上説明した本実施形態においては、論理アドレスを物理アドレスへ変換するアドレス変換データを階層的に記述することで、階層的LUT51のうちの一部のデータを効率的にキャッシュメモリ451に格納し、管理することができる。 In the present embodiment described above, by hierarchically describing the address translation data that translates the logical address into the physical address, a part of the data in the hierarchical LUT 51 is efficiently stored in the cache memory 451. Can be managed.

本実施形態において、階層的LUT51に含まれる複数のフラグメントは同じサイズである。したがって、不揮発性メモリ5からフラグメントを読み出してキャッシュメモリ451へ格納する処理と、キャッシュメモリ451からフラグメントを読み出して不揮発性メモリ5へ格納する処理を効率的に行うことができる。 In this embodiment, the plurality of fragments contained in the hierarchical LUT 51 have the same size. Therefore, it is possible to efficiently perform the process of reading the fragment from the non-volatile memory 5 and storing it in the cache memory 451 and the process of reading the fragment from the cache memory 451 and storing it in the non-volatile memory 5.

本実施形態においては、階層的LUT51が、ネームスペースごとに、論理アドレスを物理アドレスへ変換するための階層構造を持つ。このため、同じネームスペースのアドレス変換が連続する場合に、アドレス変換に必要なフラグメントがキャッシュメモリ451に格納されている可能性を高くすることができ、アドレス変換の速度を向上させることができ、キャッシュイン及びキャッシュアウトなどの処理量を少なくすることができる。 In the present embodiment, the hierarchical LUT 51 has a hierarchical structure for converting a logical address into a physical address for each namespace. Therefore, when the address translations of the same namespace are continuous, the possibility that the fragment required for the address translation is stored in the cache memory 451 can be increased, and the speed of the address translation can be improved. The amount of processing such as cash-in and cash-out can be reduced.

本実施形態に係る階層的LUT51において、記憶容量の少ないネームスペースの階層数は少なくすることができ、記憶容量の多いネームスペースの階層数は多くすることができ、ネームスペースの記憶容量に応じて無駄の少ないデータ構造を実現することができる。 In the hierarchical LUT 51 according to the present embodiment, the number of layers of the namespace having a small storage capacity can be reduced, the number of layers of the namespace having a large storage capacity can be increased, and the number of layers can be increased according to the storage capacity of the namespace. It is possible to realize a data structure with less waste.

本実施形態において、階層的LUT51に含まれる各フラグメントのサイズを、キャッシュメモリ451に含まれるキャッシュラインの単位サイズとほぼ同じにすることにより、例えばフラグメント単位又はフラグメントの整数倍でキャッシュイン及びキャッシュアウトを行うことができ、キャッシュメモリ451の管理を効率的に行うことができる。 In the present embodiment, the size of each fragment included in the hierarchical LUT 51 is set to be substantially the same as the unit size of the cache line included in the cache memory 451 so that the cache-in and cache-out are performed, for example, in fragment units or an integral multiple of the fragment. And can efficiently manage the cache memory 451.

本実施形態においては、キャッシュメモリ451に格納されているキャッシュラインを、ダーティリストDL、クリーンリストCL、フリーリストFLのいずれかに所属させるため、キャッシュラインに対応するフラグメントの状態を容易に把握することができる。 In the present embodiment, since the cache line stored in the cache memory 451 belongs to any of the dirty list DL, the clean list CL, and the free list FL, the state of the fragment corresponding to the cache line can be easily grasped. be able to.

本実施形態においては、初期化部444及びアドレス変換部445によって階層的LUT51を生成することで、メモリ45Aのキャッシュメモリ451に一度に読み出されるLUTのサイズを小さくすることができる。これにより、LUTの読み出しに要する時間を短縮できる。また、メモリ装置3の起動時に第1のレイヤL1のキャッシュラインのみが読み出されるため、メモリ装置3の起動を高速化できる。ゆえに、メモリ装置3の利便性を高めることができる。 In the present embodiment, by generating the hierarchical LUT 51 by the initialization unit 444 and the address translation unit 445, the size of the LUT that is read out to the cache memory 451 of the memory 45A at one time can be reduced. As a result, the time required for reading the LUT can be shortened. Further, since only the cache line of the first layer L1 is read when the memory device 3 is started, the start of the memory device 3 can be speeded up. Therefore, the convenience of the memory device 3 can be enhanced.

本実施形態において、メモリ装置3は、キャッシュメモリ451に含まれるダーティリストDLのサイズを管理し、情報処理装置2などからのコマンドによりダーティリストDLのサイズを変化させるとしてもよい。これにより、キャッシュメモリ451から階層的LUT51にキャッシュラインを書き戻す処理の発生頻度を制御することができ、メモリ装置3のコスト、安全性、性能、寿命のバランスを保つことができる。 In the present embodiment, the memory device 3 may manage the size of the dirty list DL included in the cache memory 451 and change the size of the dirty list DL by a command from the information processing device 2 or the like. As a result, it is possible to control the frequency of occurrence of the process of writing back the cache line from the cache memory 451 to the hierarchical LUT 51, and it is possible to maintain a balance between cost, safety, performance, and life of the memory device 3.

本実施形態においては、階層的LUT51の1つのネームスペース内において、フラグメントに含まれるエレメントの数を例えばレイヤ間で一定とすることにより、不揮発性メモリ5上で階層的LUT51を効率的に格納することができる。また、不揮発性メモリコントローラ46と不揮発性メモリ5との間におけるキャッシュラインの送受信を効率的に行うことができる。 In the present embodiment, the hierarchical LUT 51 is efficiently stored on the non-volatile memory 5 by, for example, keeping the number of elements included in the fragment constant among the layers in one namespace of the hierarchical LUT 51. be able to. Further, the cache line can be efficiently transmitted and received between the non-volatile memory controller 46 and the non-volatile memory 5.

本実施形態において、ADMフラグメント及びLUTフラグメントのサイズは同じサイズとし、さらに、ADMキャッシュライン及びLUTキャッシュラインのサイズは同じサイズとした。これにより、キャッシュメモリ制御部447は、ADMキャッシュラインとLUTキャッシュラインとを同じフォーマットのフリーリストFL、クリーンリストCL、及び、ダーティリストDLで効率的に管理可能である。例えば、ADMキャッシュライン及びLUTキャッシュラインのフリーリストを共通とすることにより、キャッシュメモリ451の容量を効率的に使用することができる。また、書き込み制御部441は、ADMフラグメントであるか、又は、LUTフラグメントであるかを区別することなく、ADMフラグメントとLUTフラグメントとを1つの書き戻し単位及びページに混在させて不揮発性メモリ5へ書き戻すことができる。これにより、ページの容量に無駄が生じることを抑えつつ、効率的にキャッシュラインを書き戻すことができる。 In the present embodiment, the sizes of the ADM fragment and the LUT fragment are the same size, and the sizes of the ADM cache line and the LUT cache line are the same size. As a result, the cache memory control unit 447 can efficiently manage the ADM cache line and the LUT cache line by the free list FL, the clean list CL, and the dirty list DL in the same format. For example, by sharing the free list of the ADM cache line and the LUT cache line, the capacity of the cache memory 451 can be efficiently used. Further, the write control unit 441 mixes the ADM fragment and the LUT fragment into one write-back unit and page to the non-volatile memory 5 without distinguishing whether the ADM fragment or the LUT fragment is used. Can be written back. This makes it possible to efficiently write back the cache line while suppressing waste of page capacity.

本発明の実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。本実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。本実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。 The embodiments of the present invention are presented as examples and are not intended to limit the scope of the invention. This embodiment can be implemented in various other forms, and various omissions, replacements, and changes can be made without departing from the gist of the invention. The present embodiment and its modifications are included in the scope and gist of the invention, and are included in the scope of the invention described in the claims and the equivalent scope thereof.

1…情報処理システム、2…情報処理装置、3…メモリ装置、4…コントローラ、5…不揮発性メモリ、41…通信インタフェース制御部、42…書き込みバッファメモリ、43…読み出しバッファメモリ、44…プロセッサ、45A,45B…メモリ、46…不揮発性メモリコントローラ、51…階層的LUT、411…送受信制御部、412…コマンド制御部、441…書き込み制御部、442…読み出し制御部、443…ガーベージコレクション制御部、444…初期化部、445…アドレス変換部、446…データマップ管理部、447…キャッシュメモリ制御部、451…キャッシュメモリ、P…制御プログラム。 1 ... Information processing system, 2 ... Information processing device, 3 ... Memory device, 4 ... Controller, 5 ... Non-volatile memory, 41 ... Communication interface control unit, 42 ... Write buffer memory, 43 ... Read buffer memory, 44 ... Processor, 45A, 45B ... Memory, 46 ... Non-volatile memory controller, 51 ... Hierarchical LUT, 411 ... Transmission / reception control unit, 412 ... Command control unit, 441 ... Write control unit, 442 ... Read control unit, 443 ... Garbage collection control unit, 444 ... Initialization unit, 445 ... Address conversion unit, 446 ... Data map management unit, 447 ... Cache memory control unit, 451 ... Cache memory, P ... Control program.

Claims (11)

不揮発性メモリと、
キャッシュメモリと、
プロセッサと、
を具備し、
前記プロセッサは、
前記不揮発性メモリから前記キャッシュメモリへ、アクセスの対象論理アドレスに対応するアドレスマッピングの複数のレイヤのそれぞれのフラグメント、及び、前記対象論理アドレスに対応するデータマッピングのフラグメントの一部をキャッシュラインとして、ロードするように構成され、
前記キャッシュメモリに前記キャッシュラインとしてロードされた前記アドレスマッピングの前記複数のレイヤの前記フラグメントを参照して、前記不揮発性メモリに対して前記対象論理アドレスからマップされる物理アドレスへアクセスするように構成され、
前記データマッピングの各ビットは、前記不揮発性メモリの物理アドレスに記憶されたデータが有効か否かを示し、
前記複数のレイヤは、前記複数のレイヤのそれぞれが複数のフラグメントを有しており、上位レイヤに属するフラグメントの一部であるエレメントが下位レイヤに属するフラグメントに対応する階層構造を有し、
前記複数のレイヤのうちの最下レイヤを除く各レイヤに属する複数のフラグメントのそれぞれは、直下のレイヤに属する複数のフラグメントに対応して複数のエレメントに区分けされ、前記直下のレイヤに属する複数のフラグメントを示す複数の参照先情報を含み、
前記複数のレイヤのうちの前記最下レイヤに属する複数のフラグメントは、前記最下レイヤにマップされた各論理アドレスと、前記各論理アドレスに関する前記不揮発性メモリの物理アドレスと、の対応を示し、
前記データマッピングの前記フラグメントは、前記アドレスマッピングの前記複数のレイヤの前記ロードされたフラグメントのそれぞれと同じサイズを有し、
ロードされた前記アドレスマッピングの前記複数のレイヤのそれぞれの前記フラグメントの前記キャッシュライン、又は、ロードされた前記データマッピングの前記フラグメントの前記キャッシュラインは、その前後で参照されるキャッシュラインを示すポインタをさらに含む
メモリ装置。
With non-volatile memory
Cache memory and
With the processor
Equipped with
The processor
From the non-volatile memory to the cache memory, each fragment of the plurality of layers of the address mapping corresponding to the target logical address of access and a part of the fragment of the data mapping corresponding to the target logical address are used as a cache line. Configured to load,
Configured to access the physical address mapped from the target logical address to the non-volatile memory with reference to the fragments of the plurality of layers of the address mapping loaded into the cache memory as the cache line. Being done
Each bit of the data mapping indicates whether or not the data stored in the physical address of the non-volatile memory is valid.
Each of the plurality of layers has a plurality of fragments, and an element that is a part of the fragment belonging to the upper layer has a hierarchical structure corresponding to the fragment belonging to the lower layer.
Each of the plurality of fragments belonging to each layer other than the lowest layer among the plurality of layers is divided into a plurality of elements corresponding to the plurality of fragments belonging to the layer immediately below, and the plurality of fragments belonging to the layer immediately below the plurality of layers. Contains multiple referenced information indicating a fragment
The plurality of fragments belonging to the lowest layer among the plurality of layers indicate the correspondence between each logical address mapped to the lowest layer and the physical address of the non-volatile memory for each logical address.
The fragment of the data mapping has the same size as each of the loaded fragments of the plurality of layers of the address mapping.
The cache line of the fragment of each of the plurality of layers of the loaded address mapping, or the cache line of the fragment of the loaded data mapping, points to a pointer indicating a cache line referenced before and after the cache line. Including ,
Memory device.
前記プロセッサは、前記対象論理アドレスに関するデータを前記対象論理アドレスからマップされる前記物理アドレスへ書き込む際に、前記アドレスマッピングの前記複数のレイヤの前記ロードされたフラグメントを更新し、前記不揮発性メモリに記憶されている前記アドレスマッピングを前記更新されたフラグメントへ書き換えるようにさらに構成される、請求項1のメモリ装置。 The processor updates the loaded fragments of the plurality of layers of the address mapping into the non-volatile memory as it writes data about the target logical address from the target logical address to the mapped physical address. The memory device of claim 1, further configured to rewrite the stored address mapping to the updated fragment. 前記プロセッサは、前記更新されたフラグメントのリストのサイズがしきい値を超えると、前記更新されたフラグメントを前記キャッシュメモリから前記不揮発性メモリへ書き戻すようにさらに構成される、請求項2のメモリ装置。 The memory of claim 2, wherein the processor is further configured to write the updated fragments back from the cache memory to the non-volatile memory when the size of the list of updated fragments exceeds a threshold. Device. 前記プロセッサは、前記対象論理アドレスからマップされる前記物理アドレスから前記対象論理アドレスに関するデータを読み出した後、前記キャッシュメモリに前記ロードされたフラグメントを維持するようにさらに構成される、請求項1のメモリ装置。 The processor is further configured to maintain the loaded fragment in the cache memory after reading data about the target logical address from the physical address mapped from the target logical address. Memory device. 前記アドレスマッピングの前記各レイヤは、複数のフラグメントを含み、前記各レイヤにおける前記複数のフラグメントのそれぞれは、異なる論理アドレス範囲に対応し、前記アドレスマッピングの異なる複数のレイヤにおける複数のフラグメントは、同じサイズを有する、請求項1のメモリ装置。 Each of the layers of the address mapping comprises a plurality of fragments, each of the plurality of fragments in each of the layers corresponds to a different logical address range, and the plurality of fragments in the plurality of layers having different address mappings are the same. The memory device of claim 1 having a size. 前記プロセッサは、前記対象論理アドレスに関するデータを前記対象論理アドレスからマップされる前記物理アドレスへ書き込む際に、前記アドレスマッピングの前記複数のレイヤの前記ロードされたフラグメントと、前記データマッピングの前記ロードされたフラグメントとを、更新し、前記不揮発性メモリに記憶されている前記アドレスマッピングと前記データマッピングとに対し、前記アドレスマッピングの前記更新されたフラグメントと前記データマッピングの前記更新されたフラグメントとをまとめて書き換えるようにさらに構成される、請求項1のメモリ装置。 When the processor writes data about the target logical address from the target logical address to the mapped physical address, the loaded fragment of the plurality of layers of the address mapping and the loaded fragment of the data mapping. The fragment is updated, and the updated fragment of the address mapping and the updated fragment of the data mapping are combined with respect to the address mapping and the data mapping stored in the non-volatile memory. The memory device according to claim 1, further configured to be rewritten. 前記プロセッサは、前記キャッシュメモリに格納されている前記キャッシュラインが、クリーンリスト、ダーティリスト、及び、フリーリストのいずれに属するかを管理し、
前記クリーンリストは、前記キャッシュメモリで書き換えられ、書き換えられた内容が前記不揮発性メモリに反映されたキャッシュラインを含み、
前記ダーティリストは、前記キャッシュメモリで書き換えられたが、書き換えられた内容が前記不揮発メモリに反映されていないキャッシュラインを含み、
前記フリーリストは、前記クリーンリストにも前記ダーティリストにも属さないキャッシュラインを含む、
請求項1のメモリ装置。
The processor manages whether the cache line stored in the cache memory belongs to a clean list, a dirty list, or a free list.
The clean list includes a cache line that is rewritten in the cache memory and the rewritten contents are reflected in the non-volatile memory.
The dirty list includes a cache line that has been rewritten in the cache memory, but the rewritten content is not reflected in the non -volatile memory.
The free list includes cache lines that do not belong to the clean list or the dirty list.
The memory device of claim 1.
不揮発性メモリとキャッシュメモリとを含むメモリ装置を制御する方法において、
前記不揮発性メモリから前記キャッシュメモリへ、アクセスの対象論理アドレスに対応するアドレスマッピングの複数のレイヤのそれぞれのフラグメント、及び、前記対象論理アドレスに対応するデータマッピングのフラグメントの一部をキャッシュラインとして、ロードすることと、
前記キャッシュメモリに前記キャッシュラインとしてロードされた前記アドレスマッピングの前記複数のレイヤの前記フラグメントを参照して、前記不揮発性メモリに対して前記対象論理アドレスからマップされる物理アドレスへアクセスすることと、
を具備し、
前記データマッピングの各ビットは、前記不揮発性メモリの物理アドレスに記憶されたデータが有効か否かを示し、
前記複数のレイヤは、前記複数のレイヤのそれぞれが複数のフラグメントを有しており、上位レイヤに属するフラグメントの一部であるエレメントが下位レイヤに属するフラグメントに対応する階層構造を有し、
前記複数のレイヤのうちの最下レイヤを除く各レイヤに属する複数のフラグメントのそれぞれは、直下のレイヤに属する複数のフラグメントに対応して複数のエレメントに区分けされ、前記直下のレイヤに属する複数のフラグメントを示す複数の参照先情報を含み、
前記複数のレイヤのうちの前記最下レイヤに属する複数のフラグメントは、前記最下レイヤにマップされた各論理アドレスと、前記各論理アドレスに関する前記不揮発性メモリの物理アドレスと、の対応を示し、
前記データマッピングの前記フラグメントは、前記アドレスマッピングの前記複数のレイヤの前記ロードされたフラグメントのそれぞれと同じサイズを有し、
ロードされた前記アドレスマッピングの前記複数のレイヤのそれぞれの前記フラグメントの前記キャッシュライン、又は、ロードされた前記データマッピングの前記フラグメントの前記キャッシュラインは、その前後で参照されるキャッシュラインを示すポインタをさらに含む
方法。
In a method of controlling a memory device including non-volatile memory and cache memory.
From the non-volatile memory to the cache memory, each fragment of the plurality of layers of the address mapping corresponding to the target logical address of access and a part of the fragment of the data mapping corresponding to the target logical address are used as a cache line. To load and
To access the physical address mapped from the target logical address to the non-volatile memory by referring to the fragments of the plurality of layers of the address mapping loaded into the cache memory as the cache line.
Equipped with
Each bit of the data mapping indicates whether or not the data stored in the physical address of the non-volatile memory is valid.
Each of the plurality of layers has a plurality of fragments, and an element that is a part of the fragment belonging to the upper layer has a hierarchical structure corresponding to the fragment belonging to the lower layer.
Each of the plurality of fragments belonging to each layer other than the lowest layer among the plurality of layers is divided into a plurality of elements corresponding to the plurality of fragments belonging to the layer immediately below, and the plurality of fragments belonging to the layer immediately below the plurality of layers. Contains multiple referenced information indicating a fragment
The plurality of fragments belonging to the lowest layer among the plurality of layers indicate the correspondence between each logical address mapped to the lowest layer and the physical address of the non-volatile memory for each logical address.
The fragment of the data mapping has the same size as each of the loaded fragments of the plurality of layers of the address mapping.
The cache line of the fragment of each of the plurality of layers of the loaded address mapping, or the cache line of the fragment of the loaded data mapping, points to a pointer indicating a cache line referenced before and after the cache line. Including ,
Method.
前記キャッシュメモリに格納されている前記キャッシュラインが、クリーンリスト、ダーティリスト、及び、フリーリストのいずれに属するかを管理することをさらに具備し、
前記クリーンリストは、前記キャッシュメモリで書き換えられ、書き換えられた内容が前記不揮発性メモリに反映されたキャッシュラインを含み、
前記ダーティリストは、前記キャッシュメモリで書き換えられたが、書き換えられた内容が前記不揮発メモリに反映されていないキャッシュラインを含み、
前記フリーリストは、前記クリーンリストにも前記ダーティリストにも属さないキャッシュラインを含む、
請求項の方法。
It further comprises managing whether the cache line stored in the cache memory belongs to a clean list, a dirty list, or a free list.
The clean list includes a cache line that is rewritten in the cache memory and the rewritten contents are reflected in the non-volatile memory.
The dirty list includes a cache line that has been rewritten in the cache memory, but the rewritten content is not reflected in the non -volatile memory.
The free list includes cache lines that do not belong to the clean list or the dirty list.
The method of claim 8 .
不揮発性メモリを制御する方法において、
前記不揮発性メモリからキャッシュメモリへ、アクセスの対象論理アドレスに対応するアドレスマッピングの複数のレイヤのそれぞれのフラグメント、及び、前記対象論理アドレスに対応するデータマッピングのフラグメントの一部をキャッシュラインとして、ロードすることと、
前記キャッシュメモリに前記キャッシュラインとしてロードされた前記アドレスマッピングの前記複数のレイヤの前記フラグメントを参照して、前記不揮発性メモリに対して前記対象論理アドレスからマップされる物理アドレスへアクセスすることと、
を具備し、
前記データマッピングの各ビットは、前記不揮発性メモリの物理アドレスに記憶されたデータが有効か否かを示し、
前記複数のレイヤは、前記複数のレイヤのそれぞれが複数のフラグメントを有しており、上位レイヤに属するフラグメントの一部であるエレメントが下位レイヤに属するフラグメントに対応する階層構造を有し、
前記複数のレイヤのうちの最下レイヤを除く各レイヤに属する複数のフラグメントのそれぞれは、直下のレイヤに属する複数のフラグメントに対応して複数のエレメントに区分けされ、前記直下のレイヤに属する複数のフラグメントを示す複数の参照先情報を含み、
前記複数のレイヤのうちの前記最下レイヤに属する複数のフラグメントは、前記最下レイヤにマップされた各論理アドレスと、前記各論理アドレスに関する前記不揮発性メモリの物理アドレスと、の対応を示し、
前記データマッピングの前記フラグメントは、前記アドレスマッピングの前記複数のレイヤの前記ロードされたフラグメントのそれぞれと同じサイズを有し、
ロードされた前記アドレスマッピングの前記複数のレイヤのそれぞれの前記フラグメントの前記キャッシュライン、又は、ロードされた前記データマッピングの前記フラグメントの前記キャッシュラインは、その前後で参照されるキャッシュラインを示すポインタをさらに含む
方法。
In the method of controlling non-volatile memory
Load each fragment of the plurality of layers of the address mapping corresponding to the target logical address of access and a part of the fragment of the data mapping corresponding to the target logical address as a cache line from the non-volatile memory to the cache memory. To do and
To access the physical address mapped from the target logical address to the non-volatile memory by referring to the fragments of the plurality of layers of the address mapping loaded into the cache memory as the cache line.
Equipped with
Each bit of the data mapping indicates whether or not the data stored in the physical address of the non-volatile memory is valid.
Each of the plurality of layers has a plurality of fragments, and an element that is a part of the fragment belonging to the upper layer has a hierarchical structure corresponding to the fragment belonging to the lower layer.
Each of the plurality of fragments belonging to each layer other than the lowest layer among the plurality of layers is divided into a plurality of elements corresponding to the plurality of fragments belonging to the layer immediately below, and the plurality of fragments belonging to the layer immediately below the plurality of layers. Contains multiple referenced information indicating a fragment
The plurality of fragments belonging to the lowest layer among the plurality of layers indicate the correspondence between each logical address mapped to the lowest layer and the physical address of the non-volatile memory for each logical address.
The fragment of the data mapping has the same size as each of the loaded fragments of the plurality of layers of the address mapping.
The cache line of the fragment of each of the plurality of layers of the loaded address mapping, or the cache line of the fragment of the loaded data mapping, points to a pointer indicating a cache line referenced before and after the cache line. Including ,
Method.
前記キャッシュメモリに格納されている前記キャッシュラインが、クリーンリスト、ダーティリスト、及び、フリーリストのいずれに属するかを管理することをさらに具備し、
前記クリーンリストは、前記キャッシュメモリで書き換えられ、書き換えられた内容が前記不揮発性メモリに反映されたキャッシュラインを含み、
前記ダーティリストは、前記キャッシュメモリで書き換えられたが、書き換えられた内容が前記不揮発メモリに反映されていないキャッシュラインを含み、
前記フリーリストは、前記クリーンリストにも前記ダーティリストにも属さないキャッシュラインを含む、
請求項1の方法。
It further comprises managing whether the cache line stored in the cache memory belongs to a clean list, a dirty list, or a free list.
The clean list includes a cache line that is rewritten in the cache memory and the rewritten contents are reflected in the non-volatile memory.
The dirty list includes a cache line that has been rewritten in the cache memory, but the rewritten content is not reflected in the non -volatile memory.
The free list includes cache lines that do not belong to the clean list or the dirty list.
The method of claim 10.
JP2020017134A 2020-02-04 2020-02-04 Memory device and method Active JP7048650B2 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2020017134A JP7048650B2 (en) 2020-02-04 2020-02-04 Memory device and method
JP2022017352A JP7238178B2 (en) 2020-02-04 2022-02-07 Memory device and method of controlling memory device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020017134A JP7048650B2 (en) 2020-02-04 2020-02-04 Memory device and method

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2016173680A Division JP2018041204A (en) 2016-09-06 2016-09-06 Memory device and information processing system

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2022017352A Division JP7238178B2 (en) 2020-02-04 2022-02-07 Memory device and method of controlling memory device

Publications (2)

Publication Number Publication Date
JP2020074222A JP2020074222A (en) 2020-05-14
JP7048650B2 true JP7048650B2 (en) 2022-04-05

Family

ID=70610358

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020017134A Active JP7048650B2 (en) 2020-02-04 2020-02-04 Memory device and method

Country Status (1)

Country Link
JP (1) JP7048650B2 (en)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004151939A (en) 2002-10-30 2004-05-27 Matsushita Electric Ind Co Ltd Storage device
JP2012063882A (en) 2010-09-14 2012-03-29 Toshiba Corp Storage device, electronic apparatus, and method for correcting error data
JP2013065310A (en) 2011-09-16 2013-04-11 Apple Inc Faster tree flattening for system having non-volatile memory
JP2013522748A (en) 2010-03-15 2013-06-13 アーム・リミテッド Hierarchical translation table control
JP2013152676A (en) 2012-01-26 2013-08-08 Hitachi Ltd Non-volatile storage
JP2016115355A (en) 2014-12-11 2016-06-23 株式会社東芝 Information processing device, program, and information processing system

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09311813A (en) * 1996-05-24 1997-12-02 Mitsubishi Electric Corp Memory management device for operating system
US9218294B1 (en) * 2012-06-06 2015-12-22 Sk Hynix Memory Solutions Inc. Multi-level logical block address (LBA) mapping table for solid state

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004151939A (en) 2002-10-30 2004-05-27 Matsushita Electric Ind Co Ltd Storage device
JP2013522748A (en) 2010-03-15 2013-06-13 アーム・リミテッド Hierarchical translation table control
JP2012063882A (en) 2010-09-14 2012-03-29 Toshiba Corp Storage device, electronic apparatus, and method for correcting error data
JP2013065310A (en) 2011-09-16 2013-04-11 Apple Inc Faster tree flattening for system having non-volatile memory
JP2013152676A (en) 2012-01-26 2013-08-08 Hitachi Ltd Non-volatile storage
JP2016115355A (en) 2014-12-11 2016-06-23 株式会社東芝 Information processing device, program, and information processing system

Also Published As

Publication number Publication date
JP2020074222A (en) 2020-05-14

Similar Documents

Publication Publication Date Title
US10628303B2 (en) Storage device that maintains a plurality of layers of address mapping
US20230315342A1 (en) Memory system and control method
US11709597B2 (en) Memory system and method for controlling nonvolatile memory
US20230259452A1 (en) Computing system and method for controlling storage device
US11467955B2 (en) Memory system and method for controlling nonvolatile memory
US11748256B2 (en) Memory system and method for controlling nonvolatile memory
CN109240938B (en) Memory system and control method for controlling nonvolatile memory
US20230401149A1 (en) Memory system and information processing system
JP7048650B2 (en) Memory device and method
JP7077151B2 (en) Memory system
JP6595654B2 (en) Information processing device
JP7238178B2 (en) Memory device and method of controlling memory device
JP7366222B2 (en) Memory system and control method
US20240086096A1 (en) Memory system and information processing system
US11809320B2 (en) Memory system caching mapping information
US20230138215A1 (en) Memory system controlling nonvolatile memory
JP2023021450A (en) memory system

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200302

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200302

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20201209

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201215

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210209

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210629

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210823

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211221

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220207

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220324

R151 Written notification of patent or utility model registration

Ref document number: 7048650

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151