JP7178916B2 - メモリシステムおよび制御方法 - Google Patents
メモリシステムおよび制御方法 Download PDFInfo
- Publication number
- JP7178916B2 JP7178916B2 JP2019013221A JP2019013221A JP7178916B2 JP 7178916 B2 JP7178916 B2 JP 7178916B2 JP 2019013221 A JP2019013221 A JP 2019013221A JP 2019013221 A JP2019013221 A JP 2019013221A JP 7178916 B2 JP7178916 B2 JP 7178916B2
- Authority
- JP
- Japan
- Prior art keywords
- block
- data
- copy
- write
- address
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
- G06F12/0623—Address space extension for memory modules
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/152—Virtualized environment, e.g. logically partitioned system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7202—Allocation control and policies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
Description
データセンターのサーバにおいても、ストレージデバイスとしてSSDが使用されている。
このため、最近では、ホストがストレージデバイス内の不揮発性メモリを直接的に制御することを可能にする新たな技術が提案され始めている。
まず、図1を参照して、本実施形態に係るメモリシステムとホストとの関係を説明する。
このメモリシステムは、不揮発性メモリにデータを書き込み、不揮発性メモリからデータを読み出すように構成された半導体ストレージデバイスである。このメモリシステムは、NANDフラッシュ技術ベースのフラッシュストレージデバイス3として実現されている。
ホスト(サーバ)2と複数のフラッシュストレージデバイス3は、インタフェース50を介して相互接続される(内部相互接続)。この相互接続のためのインタフェース50としては、これに限定されないが、PCI Express(PCIe)(登録商標)、NVM Express(NVMe)(登録商標)、Ethernet(登録商標)、NVMe over Fabrics(NVMeOF)等を使用し得る。
ホスト2がデータセンター内のサーバによって実現されるケースにおいては、このホスト(サーバ)2は、ネットワーク60を介して複数のエンドユーザ端末(クライアント)61に接続されてもよい。ホスト2は、これらエンドユーザ端末61に対して様々なサービスを提供することができる。
ホスト(サーバ)2においては、複数のエンドユーザにそれぞれ対応する複数の仮想マシン401が実行される。各仮想マシン401においては、対応するエンドユーザによって使用される、オペレーティングシステムおよびユーザアプリケーション402が実行される。
LBAベースのブロックI/Oサービスにおいては、論理アドレス(LBA)それぞれとフラッシュストレージデバイス3の物理アドレスそれぞれとの間のマッピングを管理するLUTが使用されてもよい。
ホスト(サーバ)2においては、複数の仮想マシン401にそれぞれ対応する複数のライトバッファ(WB)404が管理されていてもよい。あるユーザアプリケーション402からのライトデータは、このユーザアプリケーション402に対応する仮想マシン401用のライトバッファ(WB)404に一時的に格納されてもよい。
本実施形態においては、各ライトコマンドは、データが書き込まれるべき領域(QoSドメイン)の識別子(QoSドメインID)を指定する。あるQoSドメインIDを指定するライトコマンドをホスト2から受信した場合、フラッシュストレージデバイス3は、複数のQoSドメイン601によって共有される共通ブロック群602のうちの一つのブロックを選択し、この選択したブロックを、このQoSドメインIDを有するQoSドメイン用の書き込み先ブロックとして割り当てる。
フリーブロックとは、新たな書き込み先ブロックとして再使用(再割り当て)可能な状態(フリー状態)のブロックを意味する。フリーブロックの典型的な例は、有効データを格納していないブロックである。有効データとは、LBAのようなタグに関連付けられている最新のデータを意味する。つまり、ホスト2のLUTから最新のデータとしてリンクされているデータは有効データである。また、無効データとは、LBAのようタグに関連付けられていないデータを意味する。ホスト2のLUTからリンクされていないデータは無効データである。例えば、あるLBAに対応する更新データがフラッシュストレージデバイス3に書き込まれた場合には、このLBAに対応する以前のデータは無効データとなる。
各QoSドメインに含まれるブロックの各々について、ホスト2は、各ブロックに格納されているデータが有効データまたは無効データのいずれであるかを、LUTを使用して管理することができる。また、ホスト2は、既にデータが書き込まれている一つのブロックを新たな書き込み先ブロックとして再使用可能な状態(フリーブロック)に遷移させるためのコマンド(リユースコマンド)をフラッシュストレージデバイス3に送信することができる。
フラッシュストレージデバイス3は、コントローラ4および不揮発性メモリ(NAND型フラッシュメモリ)5を備える。フラッシュストレージデバイス3は、ランダムアクセスメモリ、例えば、DRAM6も備えていてもよい。
NAND型フラッシュメモリ5のメモリセルアレイは、複数のブロックBLK0~BLKm-1を含む。ブロックBLK0~BLKm-1の各々は複数のページ(ここではページP0~Pn-1)を含む。ブロックBLK0~BLKm-1は、消去単位として機能する。ブロックは、「消去ブロック」、「物理ブロック」、または「物理消去ブロック」と称されることもある。ページP0~Pn-1は、データ書き込み動作およびデータ読み込み動作の単位である。
コントローラ4は、ホストインタフェース11、CPU12、NANDインタフェース13、およびDRAMインタフェース14、直接メモリアクセスコントローラ(DMAC)15、ECCエンコード/デコード部16等を含む。これらホストインタフェース11、CPU12、NANDインタフェース13、DRAMインタフェース14、DMAC15、ECCエンコード/デコード部16は、バス10を介して相互接続される。
一つの物理ブロックが書き込み先ブロックとして割り当てられたケースにおいては、ブロックアドレスは、この物理ブロックを識別するためのブロックアドレスである。このブロックアドレスはチップ番号とこのチップ内のブロック番号とによって表されてもよい。
一般に、ホスト2によって書き込まれた直後のデータ(新しいデータ)ほど更新されやすく、ホスト2によって書き込まれてからの経過時間が長いデータ(古いデータ)ほど、更新されにくい、という傾向がある。コピー対象のデータは、NAND型フラッシュメモリ5に既に書き込まれているデータである。このため、コピー対象のデータは、通常、古いデータである場合が多い。
新しいデータ(高い更新頻度を有するデータ)と古いデータ(低い更新頻度を有するデータ)との混在は、フラッシュストレージデバイス3のライトアンプリフィケーションを増加させる要因となり得る。
ライトアンプリフィケーションの増加は、ブロックそれぞれの書き換え回数(プログラム/イレーズサイクルの数)の増加を引き起こす。つまり、ライトアンプリフィケーション(WA)が大きい程、ブロックの書き換え回数が、その書き換え回数の上限値に速く達しやすくなる。この結果、フラッシュストレージデバイス3の寿命の劣化が引き起こされる。
DRAMインタフェース14は、CPU12の制御の下、DRAM6を制御するように構成されたDRAM制御回路である。DRAM6の記憶領域は、ブロック管理テーブル32を格納するために使用される。また、DRAM6の記憶領域は、ライトデータ等を一時的に格納するための内部バッファとしても利用され得る。なお、内部バッファがフラッシュストレージデバイス3内に存在しない、または内部バッファの容量がほぼゼロに近い、というバッファレス構成がフラッシュストレージデバイス3に適用されてもよい。
DMAC15は、CPU12の制御の下、ホスト2内のメモリ(ライトバッファ)とDRAM6(内部バッファ)との間のデータ転送を実行する。ホスト2のライトバッファから内部バッファにライトデータを転送すべき場合には、CPU12は、ライトバッファ上の位置を示す転送元アドレス、データサイズ、内部バッファ上の位置を示す転送先アドレスをDMAC15に対して指定する。
QoSドメインクリエートコマンドは、QoSドメインを作成するためのコマンド(領域作成コマンド)である。このQoSドメインクリエートコマンドは、コマンドID、QoSドメインID、容量を含んでもよい。
ライトコマンドは、フラッシュストレージデバイス3にデータの書き込みを要求するコマンドである。このライトコマンドは、コマンドID、QoSドメインID、タグ、長さ、ライトバッファアドレス、等を含んでもよい。
長さは、書き込まれるべきライトデータの長さを示す。この長さ(データ長)は、上述の粒度(Grainとしても参照される)の数によって指定されてもよいし、LBAの数によって指定されてもよいし、あるいはバイトによって指定されてもよい。
コントローラ4は、共通ブロック群602に加え、各QoSドメインに対応するアクティブブロックリスト(アクティブブロックプール)も管理することができる。
アドレス記録要求は、ライトコマンドに関連付けられたライトデータが書き込まれたNAND型フラッシュメモリ5内の記憶位置(物理記憶位置)を示す物理アドレスをホスト2に通知するために使用される。このアドレス記録要求は、QoSドメインID、タグ、物理アドレス、長さを含んでもよい。
リードコマンドは、フラッシュストレージデバイス3にデータの読み出しを要求するコマンドである。このリードコマンドは、コマンドID、QoSドメインID、物理アドレス、長さ、リードバッファアドレスを含んでもよい。
コピーコマンドは、NAND型フラッシュメモリ5に既に書き込まれているデータをNAND型フラッシュメモリ5内の別の記憶位置にコピーすることをフラッシュストレージデバイス3に要求するコマンドである。本実施形態では、2種類のコピーコマンドがサポートされていてもよい。
セット・有効マップコマンドは、マップ情報(有効マップ)をフラッシュストレージデバイス3に通知するためのコマンドである。セット・有効マップコマンドは、コマンドID、ソースQoSドメインID、ソース物理アドレス、ビットマップを含んでもよい。
アドレス変更要求は、コピーされたデータの新たな物理アドレスをホストに通知するために使用される。つまり、アドレス変更要求は、コピー対象データの識別子(タグ)、コピー対象データがコピーされたコピー先ブロックのブロックアドレス、コピー対象データがコピーされた、コピー先ブロック内の位置を示すオフセット、等をホスト2に通知するために使用される。
旧QoSドメインIDは、コピー元QoSドメインを識別する識別子である。タグは、コピーされたデータの識別子である。複数のデータがコピーされた場合には、アドレス変更要求は、これら複数のデータに対応する複数のタグを含む。
コマンドIDはこのコマンド(この第2タイプのコピーコマンド)の固有の識別子である。ソースQoSドメインIDは、コピー元QoSドメインを識別する識別子である。ソース物理アドレスは、コピー元ブロックのブロックアドレスと、コピーすべきコピー対象データが格納されている、コピー元ブロック内の記憶位置を示すオフセットとによって表される。長さは、コピー対象データの長さを示す。ディスティネーションQoSドメインIDはコピー先QoSドメインを識別する識別子である。コピー先QoSドメインはコピー元QoSドメインと同じQoSドメインであってもよいし、コピー元QoSドメインとは異なるQoSドメインであってもよい。
図14は、物理アドレスを規定するブロックアドレスおよびオフセットを示す。
ページサイズ(各ページのユーザデータ格納領域)が16Kバイトであり、粒度(Grain)が4KBのサイズであるケースにおいては、このブロックBLKは、4×(n+1)個の領域に論理的に分割される。
オフセット+4はページ1の最初の4KB領域を示し、オフセット+5はページ1の2番目の4KB領域を示し、オフセット+6はページ1の3番目の4KB領域を示し、オフセット+7はページ1の4番目の4KB領域を示す。
ここでは、図示を簡単化するために、ある一つのスーパーブロックSB#1が4つのブロックBLK#11、BLK#21、BLK#31、BLK#41から構成されている場合が想定されている。スーパーブロックSB#1のブロックアドレス(スーパーブロックアドレス)はSB#1である。4つのブロックBLK#11、BLK#21、BLK#31、BLK#41は、異なる4個のNAND型フラッシュメモリチップからそれぞれ選択されたブロックであってもよい。
図16では、QoSドメイン#0、QoSドメイン#1、QoSドメイン#2、…、QoSドメイン#n-1が既に作成されている場合が明示されている。図16では、これらQoSドメインは四角によって表されている。あるQoSドメインを表す四角の縦幅は、このQoSドメインの容量を表している。
QoSドメインID#0を指定するQoSドメインクリエートコマンドをホスト2から受信した場合、コントローラ4は、QoSドメインID#0に関連付けられたQoSドメイン#0を作成する(ステップS11)。ステップS11では、コントローラ4は、共通ブロック群602から、このQoSドメインクリエートコマンドによって指定される容量に対応する数のブロックをQoSドメイン#0用に確保(予約する)。そして、コントローラ4は、コマンド完了のレスポンスをホスト2に返す。
(1)ホスト2においては、ホストFTL701が実行される。このホストFTL701は、LBAのようなタグとフラッシュストレージデバイス3の物理アドレスそれぞれとの間のマッピングをLUTを使用して管理する。あるユーザアプリケーションからのライト要求に応じて、ホストFTL701は、このユーザアプリケーションに対応するQoSドメインのQoSドメインIDを指定するライトコマンドをフラッシュストレージデバイス3に送信する。ホストFTL701は、QoSドメインIDのみを指定すればよく、データが書き込まれるべきブロックおよびデータが書き込まれるべきページを指定する必要は無い。このため、ホストFTL701は、フラッシュストレージデバイス3内の不良ブロック、不良ページなどを管理する必要がなくなる。
(1)ホストFTL701があるユーザアプリケーションからのリード要求を受信した場合、ホストFTL701は、ホストFTL701内のLUTを参照して、このリード要求によって指定されるLBAのようなタグに対応する物理アドレスを取得する。ホストFTL701は、このユーザアプリケーションに対応するQoSドメインのQoSドメインIDと、取得した物理アドレス(ブロックアドレスとオフセット)と、長さと、リードバッファアドレスとを指定するリードコマンドを、フラッシュストレージデバイス3に送信する。
(1)ホストFTL701は、セット・有効マップコマンドをフラッシュストレージデバイス3に送信することによって、コピー元QoSドメインのコピー元ブロックに対応するマップ情報をフラッシュストレージデバイス3に通知する。
図21においては、図示の簡単化のために、QoSドメイン#0とQoSドメイン#n-1の2つのQoSドメインのみが例示されている。共通フラッシュブロックプール801は、複数のQoSドメインによって共有される上述の共通ブロック群602を管理するためのリストである。
コントローラ4がQoSドメイン#0のQoSドメインID#0を指定するライトコマンドを受信した場合、コントローラ4は、QoSドメイン#0用の書き込み先ブロック(オープンブロック)が割り当て済みであるか否かを判定する。
コピー先ブロック全体がホストからのデータで満たされると、コントローラ4は、このコピー先ブロックをフラッシュブロックプール#0によって管理するとともに(クローズ)、共通フラッシュブロックプール801の内のフリーブロックをQoSドメイン#0用の新たなコピー先ブロック(オープンブロック)として割り当てる。
図22は、ライトコマンドの実行中に書き込み先ブロック全体がデータで満たされた場合に、コントローラ4によって実行される書き込み先ブロック割り当て動作を示す。
いま、QoSドメインID#0、タグ(LBAx)、長さ=16を指定するライトコマンドがホスト2から受信された場合を想定する。書き込み先ブロックBLK#1のページ0,ページ1にはデータが既に書き込まれている。長さ=16は、このライトコマンドに関連付けられたライトデータのサイズが64Kバイト(=16×4KB)であることを表している。
LBA=LBAx
ブロックアドレス=BLK#1
オフセット=+8
長さ=8
LBA=LBAx+8
ブロックアドレス=BLK#2
オフセット=+0
長さ=8
図23は、ホスト2から通知されるマップ情報に基づいて実行される有効データコピー動作を示す。
コピー元ブロックBLK#11において、d1~d3、d8~d9、d11、d15~d16の各々は有効データであり、d4~d7、d10、d12~d14の各々は無効データである。この場合、コピー元ブロックBLK#11に対応するマップ情報(ビットマップ)は「1110000110100011」を示す。ビットマップ内の各ビット「1」はこのビットに対応するデータが有効データであることを示し、ビットマップ内の各ビット「0」はこのビットに対応するデータが無効データであることを示す。
ここでは、先行するコピーコマンドによってBLK#100のページ0~ページ2にデータが既にコピーされている状態で、コントローラ4、コピー元ブロックBLK#11を指定する第1タイプのコピーコマンドをホスト2から受信した場合を想定する。
コントローラ4は、共通フラッシュブロックプール801から新たなコピー先ブロックBLK#200をQoSドメイン#0用に割り当てる。そして、コントローラ4は、残りの4つの有効データ(d9、d11、d15~d16)をコピー先ブロックBLK#200のページ0にコピーする。
コントローラ4は、ライトコマンドをホスト2から受信する(ステップS21)。このライトコマンドは、作成された複数のQoSドメインをアクセスするための複数のQoSドメインIDのうちの一つを指定する。コントローラ4は、複数のQoSドメインによって共有される共通フラッシュブロックプール801内の一つのブロック(フリーブロック)を選択する。そして、コントローラ4は、この選択したブロックを、受信されたライトコマンドによって指定されたQoSドメインIDに対応するQoSドメイン用の書き込み先ブロックとして割り当てる(ステップS22)。上述したように、もしこのQoSドメイン用の書き込み先ブロックが既に割り当てられているならば、この割り当て動作を実行する必要は無い。
受信されたライトコマンドに関連付けられたライトデータの一部分の書き込みによってこの書き込み先ブロック全体がデータで満たされたならば(ステップS24のNO、ステップS25のYES)、コントローラ4は、共通フラッシュブロックプール801内の一つのブロック(フリーブロック)を選択し、この選択したブロックを、このQoSドメイン用の新たな書き込み先ブロックとして割り当てる(ステップS22)。そして、コントローラ4は、この新たな書き込み先ブロック内の書き込み先位置(通常は先頭ページ)を決定し、このライトデータ内の残り部分を、この新たな書き込み先ブロック内のこの書き込み先位置に書き込む(ステップS23)。
コントローラ4は、コピーコマンドをホスト2から受信する(ステップS31)。このコピーコマンドは、コピー元ブロックのブロックアドレスと、一つのQoSドメインIDを示すコピー先対象QoSドメインの識別子とを指定する。コピー先対象QoSドメインの識別子は、ディスティネーションQoSドメインIDである。より詳しくは、このコピーコマンドは、ソースQoSドメインID、ソース物理アドレス(コピー元ブロックのブロックアドレス)、ディスティネーションQoSドメインIDを指定する。
Claims (14)
- ホストに接続可能なメモリシステムであって、
複数のブロックを含む不揮発性メモリと、
前記不揮発性メモリに電気的に接続され、前記不揮発性メモリを制御するように構成されたコントローラとを具備し、
前記コントローラは、
前記ホストから受信される領域作成コマンドそれぞれに応じて、各々が前記複数のブロックの部分集合である複数の領域を作成し、前記複数の領域のうちの一つの領域を作成する度に、前記一つの領域に対応する領域作成コマンドによって指定された容量に対応する個数のブロックを、前記複数のブロックのうちのフリーブロックの集合である共通フリーブロック群から、前記一つの領域に対して確保し、
前記複数の領域に1対1の関係でそれぞれ対応付けられた複数の識別子のうちの第1の識別子と、ライトデータに対応する論理アドレスとを含むライトコマンドを前記ホストから受信した場合、前記第1の識別子に対応する領域に対して前記共通フリーブロック群から確保されたブロックのうちの一つのブロックを前記第1の識別子に対応する領域用の第1の書き込み先ブロックとして割り当て、
前記ライトデータと前記ライトデータに対応する前記論理アドレスの双方を前記第1の書き込み先ブロックに書き込み、前記論理アドレスと、前記第1の書き込み先ブロックのブロックアドレスと、前記ライトデータが書き込まれた、前記第1の書き込み先ブロック内の記憶位置を示すオフセットとをアドレス記録要求として前記ホストに通知し、
前記第1の識別子に対応する領域に属するブロックのうちのコピー元ブロックのブロックアドレスを指定し、且つ前記第1の識別子を、前記複数の領域のうちのコピー先対象領域の識別子として指定するコピーコマンドを前記ホストから受信した場合、前記第1の識別子に対応する領域に対して前記共通フリーブロック群から確保されたブロックのうちの一つのブロックを前記第1の識別子に対応する領域用の第1のコピー先ブロックとして割り当て、
前記コピー元ブロックから前記第1のコピー先ブロックにコピー対象データと前記コピー対象データに対応する論理アドレスの双方をコピーし、前記コピー対象データに対応する前記論理アドレスと、前記第1のコピー先ブロックのブロックアドレスと、前記コピー対象データがコピーされた、前記第1のコピー先ブロック内の位置を示すオフセットとをアドレス変更要求として前記ホストに通知するように構成されている、メモリシステム。 - 前記コントローラは、前記ライトデータの一部分である第1のデータ部分の書き込みによって前記第1の書き込み先ブロック全体がデータで満たされた場合、前記第1の識別子に対応する領域に対して前記共通フリーブロック群から確保されたブロックのうちの一つのブロックを前記第1の識別子に対応する領域用の第2の書き込み先ブロックとして割り当て、前記ライトデータの残り部分である第2のデータ部分を前記第2の書き込み先ブロックに書き込むように構成されている請求項1記載のメモリシステム。
- 前記コントローラは、前記ライトデータの前記第1のデータ部分に対応する論理アドレスと、前記第1の書き込み先ブロックの前記ブロックアドレスと、前記第1のデータ部分が書き込まれた、前記第1の書き込み先ブロック内の記憶位置を示すオフセットと、前記ライトデータの前記第2のデータ部分に対応する論理アドレスと、前記第2の書き込み先ブロックのブロックアドレスと、前記第2のデータ部分が書き込まれた、前記第2の書き込み先ブロック内の記憶位置を示すオフセットとを前記アドレス記録要求として前記ホストに通知するように構成されている請求項2記載のメモリシステム。
- 前記コピー元ブロック内の前記コピー対象データの一部分である第3のデータ部分のコピーによって前記第1のコピー先ブロック全体がデータで満たされた場合、前記第1の識別子に対応する領域に対して前記共通フリーブロック群から確保されたブロックのうちの一つのブロックを前記第1の識別子に対応する領域用の第2のコピー先ブロックとして割り当て、前記コピー対象データの残り部分である第4のデータ部分を前記第2のコピー先ブロックにコピーするように構成されている請求項1記載のメモリシステム。
- 前記コントローラは、前記コピー対象データの前記第3のデータ部分に対応する論理アドレスと、前記第1のコピー先ブロックの前記ブロックアドレスと、前記第3のデータ部分がコピーされた、前記第1のコピー先ブロック内の記憶位置を示すオフセットと、前記コピー対象データの前記第4のデータ部分に対応する論理アドレスと、前記第2のコピー先ブロックのブロックアドレスと、前記第4のデータ部分がコピーされた、前記第2のコピー先ブロック内の記憶位置を示すオフセットとを前記アドレス変更要求として前記ホストに通知するように構成されている請求項4記載のメモリシステム。
- 前記複数のブロックの各々は前記複数の領域のいずれか一つに属し、同じブロックが異なる領域に同時に属さない請求項1記載のメモリシステム。
- 前記コピーコマンドが前記コピー元ブロックに含まれる有効データそれぞれをコピーするための第1タイプのコピーコマンドである場合、前記コントローラは、前記ホストから通知される、前記コピー元ブロックに含まれる各データが有効データまたは無効データのいずれであるかを示すマップ情報に基づいて、前記コピー元ブロック内の有効データそれぞれを前記第1のコピー先ブロックにコピーし、コピーされた有効データ毎に、有効データに対応する論理アドレスと前記第1のコピー先ブロックのブロックアドレスと有効データが格納されている前記第1のコピー先ブロック内の記憶位置を示すオフセットとを示す情報を、前記アドレス変更要求として前記ホストに通知するように構成されている請求項1記載のメモリシステム。
- 前記コピーコマンドが、前記コピー元ブロックの前記ブロックアドレスと、前記コピー対象データが格納されている、前記コピー元ブロック内の記憶位置を示すオフセットと、前記コピー対象データの長さとを指定する第2タイプのコピーコマンドである場合、前記コントローラは、前記第2タイプのコピーコマンドによって指定される前記オフセットおよび長さに基づいて、前記コピー対象データを前記コピー元ブロックから前記第1のコピー先ブロックにコピーするように構成されている請求項1記載のメモリシステム。
- 複数のブロックを含む不揮発性メモリを制御する制御方法であって、
ホストから受信される領域作成コマンドそれぞれに応じて、各々が前記複数のブロックの部分集合である複数の領域を作成し、前記複数の領域のうちの一つの領域を作成する度に、前記一つの領域に対応する領域作成コマンドによって指定された容量に対応する個数のブロックを、前記複数のブロックのうちのフリーブロックの集合である共通フリーブロック群から、前記一つの領域に対して確保することと、
前記複数の領域に1対1の関係でそれぞれ対応付けられた複数の識別子のうちの第1の識別子と、ライトデータに対応する論理アドレスとを含むライトコマンドを前記ホストから受信した場合、前記第1の識別子に対応する領域に対して前記共通フリーブロック群から確保されたブロックのうちの一つのブロックを前記第1の識別子に対応する領域用の第1の書き込み先ブロックとして割り当てることと、
前記ライトデータと前記ライトデータに対応する前記論理アドレスの双方を前記第1の書き込み先ブロックに書き込むことと、
前記論理アドレスと、前記第1の書き込み先ブロックのブロックアドレスと、前記ライトデータが書き込まれた、前記第1の書き込み先ブロック内の記憶位置を示すオフセットとをアドレス記録要求として前記ホストに通知することと、
前記第1の識別子に対応する領域に属するブロックのうちのコピー元ブロックのブロックアドレスを指定し、且つ前記第1の識別子を、前記複数の領域のうちのコピー先対象領域の識別子として指定するコピーコマンドを前記ホストから受信した場合、前記第1の識別子に対応する領域に対して前記共通フリーブロック群から確保されたブロックのうちの一つのブロックを前記第1の識別子に対応する領域用の第1のコピー先ブロックとして割り当てることと、
前記コピー元ブロックから前記第1のコピー先ブロックにコピー対象データと前記コピー対象データに対応する論理アドレスの双方をコピーすることと、
前記コピー対象データに対応する前記論理アドレスと、前記第1のコピー先ブロックのブロックアドレスと、前記コピー対象データがコピーされた、前記第1のコピー先ブロック内の位置を示すオフセットとをアドレス変更要求として前記ホストに通知することとを具備する制御方法。 - 前記ライトデータの一部分である第1のデータ部分の書き込みによって前記第1の書き込み先ブロック全体がデータで満たされた場合、前記第1の識別子に対応する領域に対して前記共通フリーブロック群から確保されたブロックのうちの一つのブロックを前記第1の識別子に対応する領域用の第2の書き込み先ブロックとして割り当てることと、
前記ライトデータの残り部分である第2のデータ部分を前記第2の書き込み先ブロックに書き込むこととをさらに具備する請求項9記載の制御方法。 - 前記ライトデータの前記第1のデータ部分に対応する論理アドレスと、前記第1の書き込み先ブロックの前記ブロックアドレスと、前記第1のデータ部分が書き込まれた、前記第1の書き込み先ブロック内の記憶位置を示すオフセットと、前記ライトデータの前記第2のデータ部分に対応する論理アドレスと、前記第2の書き込み先ブロックのブロックアドレスと、前記第2のデータ部分が書き込まれた、前記第2の書き込み先ブロック内の記憶位置を示すオフセットとを前記アドレス記録要求として前記ホストに通知することをさらに具備する請求項10記載の制御方法。
- 前記コピー元ブロック内の前記コピー対象データの一部分である第3のデータ部分のコピーによって前記第1のコピー先ブロック全体がデータで満たされた場合、前記第1の識別子に対応する領域に対して前記共通フリーブロック群から確保されたブロックのうちの一つのブロックを前記第1の識別子に対応する領域用の第2のコピー先ブロックとして割り当てることと、
前記コピー対象データの残り部分である第4のデータ部分を前記第2のコピー先ブロックにコピーすることとをさらに具備する請求項9記載の制御方法。 - 前記コピー対象データの前記第3のデータ部分に対応する論理アドレスと、前記第1のコピー先ブロックの前記ブロックアドレスと、前記第3のデータ部分がコピーされた、前記第1のコピー先ブロック内の記憶位置を示すオフセットと、前記コピー対象データの前記第4のデータ部分に対応する論理アドレスと、前記第2のコピー先ブロックのブロックアドレスと、前記第4のデータ部分がコピーされた、前記第2のコピー先ブロック内の記憶位置を示すオフセットとを前記アドレス変更要求として前記ホストに通知することをさらに具備する請求項12記載の制御方法。
- 前記複数のブロックの各々は前記複数の領域のいずれか一つに属し、同じブロックが異なる領域に同時に属さない請求項9記載の制御方法。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019013221A JP7178916B2 (ja) | 2019-01-29 | 2019-01-29 | メモリシステムおよび制御方法 |
US16/564,364 US11334266B2 (en) | 2019-01-29 | 2019-09-09 | Memory system and method for controlling nonvolatile memory |
US17/720,399 US11748012B2 (en) | 2019-01-29 | 2022-04-14 | Memory system and method for controlling nonvolatile memory |
JP2022178942A JP7392080B2 (ja) | 2019-01-29 | 2022-11-08 | メモリシステム |
US18/352,813 US20230359380A1 (en) | 2019-01-29 | 2023-07-14 | Memory system and method for controlling nonvolatile memory |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019013221A JP7178916B2 (ja) | 2019-01-29 | 2019-01-29 | メモリシステムおよび制御方法 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022178942A Division JP7392080B2 (ja) | 2019-01-29 | 2022-11-08 | メモリシステム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2020123039A JP2020123039A (ja) | 2020-08-13 |
JP7178916B2 true JP7178916B2 (ja) | 2022-11-28 |
Family
ID=71732440
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019013221A Active JP7178916B2 (ja) | 2019-01-29 | 2019-01-29 | メモリシステムおよび制御方法 |
JP2022178942A Active JP7392080B2 (ja) | 2019-01-29 | 2022-11-08 | メモリシステム |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022178942A Active JP7392080B2 (ja) | 2019-01-29 | 2022-11-08 | メモリシステム |
Country Status (2)
Country | Link |
---|---|
US (3) | US11334266B2 (ja) |
JP (2) | JP7178916B2 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11409439B2 (en) | 2020-11-10 | 2022-08-09 | Samsung Electronics Co., Ltd. | Binding application to namespace (NS) to set to submission queue (SQ) and assigning performance service level agreement (SLA) and passing it to a storage device |
WO2022180903A1 (ja) * | 2021-02-25 | 2022-09-01 | パナソニックIpマネジメント株式会社 | データ記録システム及びデータ記録システムの制御方法 |
US20240143206A1 (en) * | 2022-10-26 | 2024-05-02 | Xilinx, Inc. | Memory controller to perform in-line data processing and efficiently organize data and associated metadata in memory |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003317489A (ja) | 2002-04-24 | 2003-11-07 | Nec Micro Systems Ltd | 不揮発性半導体記憶装置、そのデータ書き込み制御方法およびプログラム |
JP2005339438A (ja) | 2004-05-31 | 2005-12-08 | Tdk Corp | メモリンコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 |
JP2010128519A (ja) | 2008-11-25 | 2010-06-10 | Hitachi Ltd | 記憶制御装置及び記憶制御装置の制御方法 |
US20160321010A1 (en) | 2015-04-28 | 2016-11-03 | Kabushiki Kaisha Toshiba | Storage system having a host directly manage physical data locations of storage device |
JP2017162067A (ja) | 2016-03-08 | 2017-09-14 | 東芝メモリ株式会社 | ストレージシステム、情報処理システムおよび制御方法 |
JP2018142238A (ja) | 2017-02-28 | 2018-09-13 | 東芝メモリ株式会社 | メモリシステムおよび制御方法 |
JP2019008730A (ja) | 2017-06-28 | 2019-01-17 | 東芝メモリ株式会社 | メモリシステム |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8566505B2 (en) * | 2008-04-15 | 2013-10-22 | SMART Storage Systems, Inc. | Flash management using sequential techniques |
JP5066209B2 (ja) | 2010-03-18 | 2012-11-07 | 株式会社東芝 | コントローラ、データ記憶装置、及びプログラム |
CA2881206A1 (en) * | 2014-02-07 | 2015-08-07 | Andrew WARFIELD | Methods, systems and devices relating to data storage interfaces for managing address spaces in data storage devices |
US9696935B2 (en) * | 2015-04-24 | 2017-07-04 | Kabushiki Kaisha Toshiba | Storage device that secures a block for a stream or namespace and system having the storage device |
JP6444917B2 (ja) * | 2016-03-08 | 2018-12-26 | 東芝メモリ株式会社 | ストレージシステム、情報処理システムおよび制御方法 |
US10055159B2 (en) | 2016-06-20 | 2018-08-21 | Samsung Electronics Co., Ltd. | Morphic storage device |
US10390114B2 (en) | 2016-07-22 | 2019-08-20 | Intel Corporation | Memory sharing for physical accelerator resources in a data center |
-
2019
- 2019-01-29 JP JP2019013221A patent/JP7178916B2/ja active Active
- 2019-09-09 US US16/564,364 patent/US11334266B2/en active Active
-
2022
- 2022-04-14 US US17/720,399 patent/US11748012B2/en active Active
- 2022-11-08 JP JP2022178942A patent/JP7392080B2/ja active Active
-
2023
- 2023-07-14 US US18/352,813 patent/US20230359380A1/en active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003317489A (ja) | 2002-04-24 | 2003-11-07 | Nec Micro Systems Ltd | 不揮発性半導体記憶装置、そのデータ書き込み制御方法およびプログラム |
JP2005339438A (ja) | 2004-05-31 | 2005-12-08 | Tdk Corp | メモリンコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 |
JP2010128519A (ja) | 2008-11-25 | 2010-06-10 | Hitachi Ltd | 記憶制御装置及び記憶制御装置の制御方法 |
US20160321010A1 (en) | 2015-04-28 | 2016-11-03 | Kabushiki Kaisha Toshiba | Storage system having a host directly manage physical data locations of storage device |
JP2017162067A (ja) | 2016-03-08 | 2017-09-14 | 東芝メモリ株式会社 | ストレージシステム、情報処理システムおよび制御方法 |
JP2018142238A (ja) | 2017-02-28 | 2018-09-13 | 東芝メモリ株式会社 | メモリシステムおよび制御方法 |
JP2019008730A (ja) | 2017-06-28 | 2019-01-17 | 東芝メモリ株式会社 | メモリシステム |
Also Published As
Publication number | Publication date |
---|---|
US11748012B2 (en) | 2023-09-05 |
JP2023010765A (ja) | 2023-01-20 |
US20230359380A1 (en) | 2023-11-09 |
JP7392080B2 (ja) | 2023-12-05 |
US20220244854A1 (en) | 2022-08-04 |
US20200241750A1 (en) | 2020-07-30 |
JP2020123039A (ja) | 2020-08-13 |
US11334266B2 (en) | 2022-05-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7159069B2 (ja) | メモリシステムおよび制御方法 | |
JP6785205B2 (ja) | メモリシステムおよび制御方法 | |
CN109144888B (zh) | 存储器*** | |
TWI805323B (zh) | 儲存裝置 | |
CN114115747B (zh) | 存储器***及控制方法 | |
JP7358594B2 (ja) | メモリシステム | |
JP6785204B2 (ja) | メモリシステムおよび制御方法 | |
JP7392080B2 (ja) | メモリシステム | |
JP7353934B2 (ja) | メモリシステムおよび制御方法 | |
JP7381678B2 (ja) | メモリシステム | |
US11675544B2 (en) | Memory system for controlling nonvolatile memory including a plurality of nonvolatile memory dies each including a plurality of physical blocks | |
JP2021033849A (ja) | メモリシステムおよび制御方法 | |
JP2021033847A (ja) | メモリシステムおよび制御方法 | |
JP7013546B2 (ja) | メモリシステム | |
JP2019212103A (ja) | メモリシステム | |
JP7524443B2 (ja) | メモリシステムおよび制御方法 | |
JP7490714B2 (ja) | メモリシステムおよび制御方法 | |
JP7167295B2 (ja) | メモリシステムおよび制御方法 | |
JP7204020B2 (ja) | 制御方法 | |
JP2023136081A (ja) | メモリシステムおよび制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20210914 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20220713 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20220719 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20220901 |
|
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: 20221018 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20221115 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 7178916 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |