JP2020123041A - メモリシステムおよび制御方法 - Google Patents
メモリシステムおよび制御方法 Download PDFInfo
- Publication number
- JP2020123041A JP2020123041A JP2019013223A JP2019013223A JP2020123041A JP 2020123041 A JP2020123041 A JP 2020123041A JP 2019013223 A JP2019013223 A JP 2019013223A JP 2019013223 A JP2019013223 A JP 2019013223A JP 2020123041 A JP2020123041 A JP 2020123041A
- Authority
- JP
- Japan
- Prior art keywords
- block
- command
- host
- received
- read
- 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.)
- Granted
Links
Images
Classifications
-
- 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
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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/0604—Improving or facilitating administration, e.g. storage management
-
- 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/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/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
Abstract
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に送信することができる。このコマンドは、フリーブロック群から割り当て済みの一つのブロックをフリーブロックとしてフリーブロック群に返却するために使用される。つまり、このコマンドは、フリーブロック群から割り当て済みの一つのブロックを新たな書き込み先ブロックとして再使用可能な状態に遷移させるためにこのブロックをフリーブロック群に返却するために使用される。
このリユースコマンドは、特定のQoSドメインに書き込み先ブロックとして割り当て済みのブロックのうちの一つのブロックを、共通ブロック群602に返却して任意のQoSドメイン用の新たな書き込み先ブロックとして再使用可能にするためのコマンドである。このリユースコマンドは、特定の領域(QoSドメイン)の識別子(QoSドメインID)と、共通ブロック群602に返却すべきブロックのブロックアドレスとを指定する。リユースコマンドによって指定されたブロックは共通ブロック群602にフリーブロックとして返却される。この返却されたブロックは、その消去動作が実行された後に、任意のQoSドメイン用の新たな書き込み先ブロックとして再使用(再割り当て)することができる。
フラッシュストレージデバイス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を介して相互接続される。
CPU12は、ホストインタフェース11、NANDインタフェース13、DRAMインタフェース14、DMAC15、ECCエンコード/デコード部16を制御するように構成されたプロセッサである。CPU12は、フラッシュストレージデバイス3の電源オンに応答してNAND型フラッシュメモリ5または図示しないROMから制御プログラム(ファームウェア)をDRAM6にロードし、そしてこのファームウェアを実行することによって様々な処理を行う。なお、ファームウェアはコントローラ4内の図示しないSRAM上にロードされてもよい。このCPU12は、ホスト2からの様々なコマンドを実行するためのコマンド処理等を実行することができる。CPU12の動作は、CPU12によって実行される上述のファームウェアによって制御される。なお、コマンド処理の一部または全部は、コントローラ4内の専用ハードウェアによって実行してもよい。
一つの物理ブロックが書き込み先ブロックとして割り当てられたケースにおいては、ブロックアドレスは、この物理ブロックを識別するためのブロックアドレスである。このブロックアドレスはチップ番号とこのチップ内のブロック番号とによって表されてもよい。
DRAMインタフェース14は、CPU12の制御の下、DRAM6を制御するように構成されたDRAM制御回路である。DRAM6の記憶領域は、コマンドキュー31、ブロック管理テーブル32を格納するために使用される。また、DRAM6の記憶領域は、ライトデータ等を一時的に格納するための内部バッファとしても利用され得る。なお、内部バッファがフラッシュストレージデバイス3内に存在しない、または内部バッファの容量がほぼゼロに近い、というバッファレス構成がフラッシュストレージデバイス3に適用されてもよい。
DMAC15は、CPU12の制御の下、ホスト2内のメモリ(ライトバッファ)とDRAM6(内部バッファ)との間のデータ転送を実行する。ホスト2のライトバッファから内部バッファにライトデータを転送すべき場合には、CPU12は、ライトバッファ上の位置を示す転送元アドレス、データサイズ、内部バッファ上の位置を示す転送先アドレスをDMAC15に対して指定する。
ライトコマンドは、フラッシュストレージデバイス3にデータの書き込みを要求するコマンドである。このライトコマンドは、コマンドID、QoSドメインID、タグ、長さ、ライトバッファアドレス、等を含んでもよい。
長さは、書き込まれるべきライトデータの長さを示す。この長さ(データ長)は、上述の粒度(Grainとしても参照される)の数によって指定されてもよいし、LBAの数によって指定されてもよいし、あるいはバイトによって指定されてもよい。
コントローラ4は、ホスト2から受信されるQoSドメインクリエートコマンドに基づいて、QoSドメインクリエートコマンドによって指定された容量を有するQoSドメインを作成することができる。この場合、コントローラ4は、図2の共通ブロック群602のうちの、指定された容量に対応する個数のブロックを、このQoSドメイン用に確保(予約)してもよい。ホスト2がQoSドメインクリエートコマンドを送信する度に、新たなQoSドメインが作成される。
各ブロックの状態は、有効データを格納しているアクティブブロック(クローズ状態のブロック)と、有効データを格納しておらず書き込み先ブロックとして再使用可能なフリーブロックとに大別される。あるQoSドメインにおいては、アクティブブロックである各ブロックは、このQoSドメインに対応するアクティブブロックリストによって管理される。一方、各QoSドメインの各フリーブロックは、共通ブロック群602によって管理される。
アドレス記録要求は、ライトコマンドに関連付けられたライトデータが書き込まれたNAND型フラッシュメモリ5内の記憶位置(物理記憶位置)を示す物理アドレスをホスト2に通知するために使用される。このアドレス記録要求は、QoSドメインID、タグ、物理アドレス、長さを含んでもよい。
リードコマンドは、フラッシュストレージデバイス3にデータの読み出しを要求するコマンドである。このリードコマンドは、コマンドID、QoSドメインID、物理アドレス、長さ、リードバッファアドレスを含んでもよい。
リユースコマンドは、既にデータが書き込まれているブロックを共通ブロック群602に返却してこのブロックを任意のQoSドメイン用の新たな書き込み先ブロックとして再使用可能な状態(フリーブロック)にするためのコマンドである。
コマンドIDはこのコマンド(このリユースコマンド)の固有の識別子である。QoSドメインIDは、再使用可能な状態にするためのブロックが現在属しているQoSドメインを識別するための識別子である。物理アドレスは、再使用可能な状態にするためのブロックのブロックアドレスである。
QoSドメインクリエートコマンドは、QoSドメインを作成するためのコマンドである。このQoSドメインクリエートコマンドは、コマンドID、QoSドメインID、容量を含んでもよい。
コマンドIDはこのコマンド(このQoSドメインクリエートコマンド)の固有の識別子である。QoSドメインIDは、作成すべきQoSドメインの識別子である。容量は、作成すべきQoSドメイン用に確保すべき容量を示す。コントローラ4は、この容量に対応する個数のブロックを共通ブロック群602から確保し、このQoSドメインIDを指定するライトコマンドに応じて、この確保されたブロックのうちの一つのブロックをこのQoSドメイン用の書き込み先ブロックとして割り当てる。
ブロックアドレスはある一つのブロックBLKを指定する。各ブロックBLKは、図11に示されているように、複数のページ(ここでは、ページ0〜ページn)を含む。
ページサイズ(各ページのユーザデータ格納領域)が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型フラッシュメモリチップからそれぞれ選択されたブロックであってもよい。
図13では、QoSドメイン#0、QoSドメイン#1、QoSドメイン#2、…、QoSドメイン#n−1が既に作成されている場合が明示されている。図13では、これらQoSドメインは四角によって表されている。あるQoSドメインを表す四角の縦幅は、このQoSドメインの容量を表している。
(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に送信する。
図16においては、図示の簡単化のために、QoSドメイン#0とQoSドメイン#n−1の2つのQoSドメインのみが例示されている。共通フラッシュブロックプール801は、複数のQoSドメインによって共有される上述の共通ブロック群602を管理するためのリストである。
コントローラ4がQoSドメイン#0のQoSドメインID#0を指定するライトコマンドを受信した場合、コントローラ4は、QoSドメイン#0用の書き込み先ブロック(オープンブロック)が割り当て済みであるか否かを判定する。
コピー先ブロック全体がホストからのデータで満たされると、コントローラ4は、このコピー先ブロックをフラッシュブロックプール#0によって管理するとともに(クローズ)、共通フラッシュブロックプール801の内のフリーブロックをQoSドメイン#0用の新たなコピー先ブロック(オープンブロック)として割り当てる。
この場合、このリードコマンドが実際に実行される時点では、このブロックは共通フラッシュブロックプール801にフリーブロックとして既に返却されてしまっているので、このリードコマンドを正常に実行することはできなくなる。場合によっては、不定値がリードデータとしてホスト2に返されてしまうかもしれない。
図18は、コントローラ4によって管理される、コマンド数カウンタを含むブロック管理テーブル32を示す。
イン・フライトコマンド数カウンタの値は、ホスト2から既に受信され且つ未完了のリードコマンドの数を示すカウンタ値として使用される。コントローラ4は、共通フラッシュブロックプール801に入っているフリーブロック群(再使用可能状態のブロック群)以外の各ブロックについてイン・フライトコマンド数カウンタを管理する。
受信されたリードコマンドの実行が完了する度に、つまりこのリードコマンドに対応するデータ読み出し動作が完了する度に、コントローラ4は、完了したリードコマンド内のブロックアドレスによって指定されるブロックに対応するイン・フライトコマンド数カウンタ値を1減らす。
ブロックBLK#1のブロックアドレスを指定するリードコマンドの実行が完了したら、コントローラ4は、ブロックBLK#1に対応するイン・フライトコマンド数カウンタ値を1減らす。
例えば、ブロックBLK#1に関しては、コントローラ4は、このブロックBLK#1をQoSドメイン#0用の書き込み先ブロックとして割り当てる場合、コントローラ4は、ブロックBLK#1に対応するイン・フライトコマンド数カウンタ値をゼロにする。
ブロックBLK#1のブロックアドレスを指定するリードコマンドの実行が完了したら、コントローラ4は、ブロックBLK#1に対応するイン・フライトコマンド数カウンタ値を1減らす。
ブロックBLK#1のブロックアドレスをコピー元ブロックのブロックアドレスとして指定するコピーコマンドの実行が完了したら、コントローラ4は、ブロックBLK#1に対応するイン・フライトコマンド数カウンタ値を1減らす。
コントローラ4は、ホスト2から受信されたコマンドかリードコマンドであるか否かを判定する(ステップS11)。
受信されたコマンドがリードコマンドであるならば(ステップS11のYES)、このリードコマンド内のブロックアドレスによって指定されるリード対象のブロックに対応するイン・フライトコマンド数カウンタ値を1増やす(ステップS12)。このリードコマンドの実行が完了すると(ステップS13のYES)、コントローラ4は、このリードコマンド内のブロックアドレスによって指定されるリード対象のブロックに対応するイン・フライトコマンド数カウンタ値を1減らす(ステップS14)。
図20のイン・フライトコマンド数カウンタ更新処理においては、図19のステップS11〜S14の処理に加え、ステップS21〜S24の処理が追加されている。
このコマンドがコピーコマンドであるならば(ステップS21のYES)、コントローラ4は、このコピーコマンド内のコピー元ブロックアドレスによって指定されるコピー元ブロックに対応するイン・フライトコマンド数カウンタ値を1増やす(ステップS22)。このコピーコマンドの実行が完了すると(ステップS23のYES)、コントローラ4は、このコピーコマンド内のコピー元ブロックアドレスによって指定されるコピー元ブロックに対応するイン・フライトコマンド数カウンタ値を1減らす(ステップS24)。
上述のイン・フライトコマンド数カウンタを使用する代わりに、コントローラ4は、未完了のコマンドそれぞれが格納されているコントローラ4内のコマンドキュー31を参照して、ホスト2から既に受信され且つリユースコマンドによって指定されたブロックアドレスを指定する未完了のリードコマンドが存在するか否かを判定してもよい。コマンドキュー31が複数のQoSドメインに対応する複数のコマンドキューに分割されている場合には、リユースコマンドによって指定されたQoSドメインに対応するコマンドキューのみが参照されればよい。
図22では、リユースコマンドによってQoSドメインID#0、ブロックアドレスBLK#Xが指定された場合が想定されている。コントローラ4は、QoSドメインID#0に対応する未完了のコマンド(未実行のコマンド、実行途中のコマンド)が格納されているコマンドキュー#0を参照して、ブロックアドレスBLK#Xを指定するリードコマンドと、ソースブロックアドレスBLK#Xを指定するコピーコマンドとを探す。コマンドキュー#0に、ブロックアドレスBLK#Xを指定するリードコマンド、またはソースブロックアドレスBLK#Xを指定するコピーコマンドが存在するならば、コントローラ4は、これら未完了のコマンドの実行が完了した後に、リユースコマンドを実行する。
コントローラ4はホスト2から様々なコマンドを受信し(ステップS31)、受信されたコマンドそれぞれを実行する(ステップS32)。例えば、読み出し対象のブロックのブロックアドレスとこの読み出し対象のブロック内の読み出し対象の記憶位置を示すオフセットとを指定するリードコマンドそれぞれをホスト2から受信した場合には、コントローラ4は、受信された各リードコマンドに応じてデータ読み出し動作を実行する。
コントローラ4はホスト2から様々なコマンドを受信し(ステップS41)、受信されたコマンドそれぞれを実行する(ステップS42)。例えば、読み出し対象のブロックのブロックアドレスとこの読み出し対象のブロック内の読み出し対象の記憶位置を示すオフセットとを指定するリードコマンドそれぞれをホスト2から受信した場合には、コントローラ4は、受信された各リードコマンドに応じてデータ読み出し動作を実行する。
コントローラ4はホスト2から様々なコマンドを受信し(ステップS51)、受信されたコマンドそれぞれを実行する(ステップS52)。例えば、読み出し対象のブロックのブロックアドレスとこの読み出し対象のブロック内の読み出し対象の記憶位置を示すオフセットとを指定するリードコマンドそれぞれをホスト2から受信した場合には、コントローラ4は、受信された各リードコマンドに応じてデータ読み出し動作を実行する。
コントローラ4はホスト2から様々なコマンドを受信し(ステップS61)、受信されたコマンドそれぞれを実行する(ステップS62)。例えば、読み出し対象のブロックのブロックアドレスとこの読み出し対象のブロック内の読み出し対象の記憶位置を示すオフセットとを指定するリードコマンドそれぞれをホスト2から受信した場合には、コントローラ4は、受信された各リードコマンドに応じてデータ読み出し動作を実行する。
<ブロックアドレスを指定するライトコマンド>
このライトコマンドは、コマンドID、QoSドメインID、物理アドレス、タグ、長さ、ライトバッファアドレス、等を含んでもよい。
タグは、書き込まれるべきライトデータを識別するための識別子である。このタグは、上述したように、LBAのような論理アドレスであってもよいし、キー・バリュー・ストアのキーであってもよいし、このキーのハッシュ値であってもよい。
ライトバッファアドレスは、書き込まれるべきライトデータが格納されているホストメモリ(ホスト2のライトバッファ)内の位置を示す。ライトバッファアドレスは、データポインタとしても参照される。
このライトコマンドは、コマンドID、QoSドメインID、物理アドレス、タグ、長さ、ライトバッファアドレス、等を含んでもよい。
コマンドIDはこのコマンド(このライトコマンド)の固有の識別子である。QoSドメインIDは、データが書き込まれるべきQoSドメインを一意に識別可能な識別子である。あるエンドユーザに対応するアプリケーションからのライト要求に応じてホスト2から送信されるライトコマンドは、このエンドユーザに対応するQoSドメインを指定するQoSドメインIDを含む。
タグは、書き込まれるべきライトデータを識別するための識別子である。このタグは、上述したように、LBAのような論理アドレスであってもよいし、キー・バリュー・ストアのキーであってもよいし、このキーのハッシュ値であってもよい。
ライトバッファアドレスは、書き込まれるべきライトデータが格納されているホストメモリ(ホスト2のライトバッファ)内の位置を示す。
Claims (15)
- ホストに接続可能なメモリシステムであって、
複数のブロックを含む不揮発性メモリと、
前記不揮発性メモリに電気的に接続され、前記複数のブロックのうちの読み出し対象のブロックのブロックアドレスと前記読み出し対象のブロック内の読み出し対象の記憶位置を示すオフセットとを指定するリードコマンドそれぞれを前記ホストから受信し、受信された各リードコマンドに応じてデータ読み出し動作を実行するように構成されたコントローラとを具備し、
前記コントローラは、
既にデータが書き込まれている第1のブロックを新たな書き込み先ブロックとして再使用可能な状態に遷移させるための第1のコマンドを前記ホストから受信した場合、前記ホストから既に受信され且つ前記第1のブロックのブロックアドレスを指定する未完了のリードコマンドが存在するか否かを判定し、
前記第1のブロックのブロックアドレスを指定する前記未完了のリードコマンドが存在する場合、前記第1のブロックのブロックアドレスを指定する前記未完了のリードコマンドの実行が完了した後に、前記第1のコマンドを実行して前記第1のブロックを前記再使用可能な状態に遷移させるように構成されている、メモリシステム。 - 前記コントローラは、前記第1のブロックが前記新たな書き込み先ブロックとして再使用可能な状態に遷移された後に、前記第1のブロックのブロックアドレスを指定する新たなリードコマンドが前記ホストから受信された場合、前記受信された新たなリードコマンドを実行せずに、前記受信された新たなリードコマンドの失敗を示す応答を前記ホストに返すように構成されている請求項1記載のメモリシステム。
- 前記コントローラは、
各々が前記複数のブロックの部分集合である複数の領域をアクセスするための複数の識別子のうちの第1の識別子を指定するライトコマンドを前記ホストから受信した場合、前記複数の領域によって共有される共通フリーブロック群のうちの一つのブロックを前記第1の識別子に対応する領域用の書き込み先ブロックとして割り当て、前記ライトコマンドに関連付けられたデータを前記書き込み先ブロックに書き込むように構成され、
前記第1のコマンドは、前記複数の領域の一つに書き込み先ブロックとして割り当て済みのブロックのうちの一つのブロックを、前記共通フリーブロック群に返却して任意の領域用の新たな書き込み先ブロックとして再使用可能にするためのコマンド、または前記複数のブロックのうちの一つのブロックに対する消去動作を実行するためのコマンドである請求項1記載のメモリシステム。 - 前記コントローラは、
前記ホストから既に受信され且つ未完了のリードコマンドの数を示すカウンタ値を、既にデータが書き込まれているブロック毎に管理し、
前記ホストからリードコマンドを受信する度に、前記受信されたリードコマンド内のブロックアドレスによって指定されるブロックに対応するカウンタ値を1増やし、
前記受信されたリードコマンドの実行が完了する度に、前記完了したリードコマンド内のブロックアドレスによって指定されるブロックに対応するカウンタ値を1減らし、
前記第1のブロックを前記再使用可能な状態に遷移させるための前記第1のコマンドを前記ホストから受信した場合、前記第1のブロックに対応するカウンタ値がゼロであるか否かに応じて、前記ホストから既に受信され且つ前記第1のブロックのブロックアドレスを指定する前記未完了のリードコマンドが存在するか否かを判定するように構成されている請求項1記載のメモリシステム。 - 前記コントローラは、前記第1のブロックを前記再使用可能な状態に遷移させるための前記第1のコマンドを前記ホストから受信した場合、未完了のコマンドそれぞれが格納されている前記コントローラ内のコマンドキューを参照して、前記ホストから既に受信され且つ前記第1のブロックのブロックアドレスを指定する前記未完了のリードコマンドが存在するか否かを判定するように構成されている請求項1記載のメモリシステム。
- 前記コントローラは、
前記第1のブロックを前記再使用可能な状態に遷移させるための前記第1のコマンドを前記ホストから受信した場合、前記ホストから既に受信され且つ前記第1のブロックのブロックアドレスをコピー元ブロックのブロックアドレスとして指定する未完了のコピーコマンドが存在するか否かをさらに判定し、
前記第1のブロックのブロックアドレスを指定する前記未完了のリードコマンドと、前記第1のブロックのブロックアドレスをコピー元ブロックのブロックアドレスとして指定する前記未完了のコピーコマンドの双方の実行が完了した後に、前記第1のコマンドを実行して前記第1のブロックを前記再使用可能な状態に遷移させるように構成されている請求項1記載のメモリシステム。 - ホストに接続可能なメモリシステムであって、
複数のブロックを含む不揮発性メモリと、
前記不揮発性メモリに電気的に接続され、前記複数のブロックのうちの読み出し対象のブロックのブロックアドレスと前記読み出し対象のブロック内の読み出し対象の記憶位置を示すオフセットとを指定するリードコマンドそれぞれを前記ホストから受信し、受信された各リードコマンドに応じてデータ読み出し動作を実行するように構成されたコントローラとを具備し、
前記コントローラは、
既にデータが書き込まれている第1のブロックを新たな書き込み先ブロックとして再使用可能な状態に遷移させるための第1のコマンドを前記ホストから受信した場合、前記ホストから既に受信され且つ前記第1のブロックのブロックアドレスを指定する未完了のリードコマンドが存在するか否かを判定し、
前記第1のブロックのブロックアドレスを指定する前記未完了のリードコマンドが存在しない場合、前記第1のコマンドを実行して前記第1のブロックを前記再使用可能な状態に遷移させ、
前記第1のブロックのブロックアドレスを指定する前記未完了のリードコマンドが存在する場合、前記第1のコマンドを実行せずに、前記第1のコマンドの失敗を示す応答を前記ホストに返すように構成されているメモリシステム。 - 前記コントローラは、前記第1のブロックが前記新たな書き込み先ブロックとして再使用可能な状態に遷移された後に、前記第1のブロックのブロックアドレスを指定する新たなリードコマンドが前記ホストから受信された場合、前記受信された新たなリードコマンドを実行せずに、前記受信された新たなリードコマンドの失敗を示す応答を前記ホストに返すように構成されている請求項7記載のメモリシステム。
- 前記コントローラは、各々が前記複数のブロックの部分集合である複数の領域をアクセスするための複数の識別子のうちの第1の識別子を指定するライトコマンドを前記ホストから受信した場合、前記複数の領域によって共有される共通フリーブロック群のうちの一つのブロックを前記第1の識別子に対応する領域用の書き込み先ブロックとして割り当て、前記ライトコマンドに関連付けられたデータを前記書き込み先ブロックに書き込むように構成され、
前記第1のコマンドは、前記複数の領域の一つに書き込み先ブロックとして割り当て済みのブロックのうちの一つのブロックを、前記共通フリーブロック群に返却して任意の領域用の新たな書き込み先ブロックとして再使用可能にするためのコマンド、または前記複数のブロックのうちの一つのブロックに対する消去動作を実行するためのコマンドである請求項7記載のメモリシステム。 - 前記コントローラは、
前記ホストから既に受信され且つ未完了のリードコマンドの数を示すカウンタ値を、既にデータが書き込まれているブロック毎に管理し、
前記ホストからリードコマンドを受信する度に、前記受信されたリードコマンド内のブロックアドレスによって指定されるブロックに対応するカウンタ値を1増やし、
前記受信されたリードコマンドの実行が完了する度に、前記完了したリードコマンド内のブロックアドレスによって指定されるブロックに対応するカウンタ値を1減らし、
前記第1のブロックを前記再使用可能な状態に遷移させるための前記第1のコマンドを前記ホストから受信した場合、前記第1のブロックに対応するカウンタ値がゼロであるか否かに応じて、前記ホストから既に受信され且つ前記第1のブロックのブロックアドレスを指定する前記未完了のリードコマンドが存在するか否かを判定するように構成されている請求項7記載のメモリシステム。 - 前記コントローラは、前記第1のブロックを前記再使用可能な状態に遷移させるための前記第1のコマンドを前記ホストから受信した場合、未完了のコマンドそれぞれが格納されている前記コントローラ内のコマンドキューを参照して、前記ホストから既に受信され且つ前記第1のブロックのブロックアドレスを指定する前記未完了のリードコマンドが存在するか否かを判定するように構成されている請求項7記載のメモリシステム。
- 前記コントローラは、
前記第1のブロックを前記再使用可能な状態に遷移させるための前記第1のコマンドを前記ホストから受信した場合、前記ホストから既に受信され且つ前記第1のブロックのブロックアドレスをコピー元ブロックのブロックアドレスとして指定する未完了のコピーコマンドが存在するか否かをさらに判定し、
前記第1のブロックのブロックアドレスを指定する前記未完了のリードコマンド、または前記第1のブロックのブロックアドレスをコピー元ブロックのブロックアドレスとして指定する前記未完了のコピーコマンドが存在する場合、前記第1のコマンドを実行せずに、前記第1のコマンドの失敗を示す応答を前記ホストに返すように構成されている請求項7記載のメモリシステム。 - 複数のブロックを含む不揮発性メモリを制御する制御方法であって、
前記複数のブロックのうちの読み出し対象のブロックのブロックアドレスと前記読み出し対象のブロック内の読み出し対象の記憶位置を示すオフセットとを指定するリードコマンドそれぞれをホストから受信することと、
受信された各リードコマンドに応じてデータ読み出し動作を実行することと、
既にデータが書き込まれている第1のブロックを新たな書き込み先ブロックとして再使用可能な状態に遷移させるための第1のコマンドを前記ホストから受信した場合、前記ホストから既に受信され且つ前記第1のブロックのブロックアドレスを指定する未完了のリードコマンドが存在するか否かを判定することと、
前記第1のブロックのブロックアドレスを指定する前記未完了のリードコマンドが存在する場合、前記第1のブロックのブロックアドレスを指定する前記未完了のリードコマンドの実行が完了した後に、前記第1のコマンドを実行して前記第1のブロックを前記再使用可能な状態に遷移させることとを具備する制御方法。 - 前記第1のブロックが前記新たな書き込み先ブロックとして再使用可能な状態に遷移された後に、前記第1のブロックのブロックアドレスを指定する新たなリードコマンドが前記ホストから受信された場合、前記受信された新たなリードコマンドを実行せずに、前記受信された新たなリードコマンドの失敗を示す応答を前記ホストに返すことをさらに具備する請求項13記載の制御方法。
- 各々が前記複数のブロックの部分集合である複数の領域をアクセスするための複数の識別子のうちの第1の識別子を指定するライトコマンドを前記ホストから受信した場合、前記複数の領域によって共有される共通フリーブロック群のうちの一つのブロックを前記第1の識別子に対応する領域用の書き込み先ブロックとして割り当て、前記ライトコマンドに関連付けられたデータを前記書き込み先ブロックに書き込むことをさらに具備し、
前記第1のコマンドは、前記複数の領域の一つに書き込み先ブロックとして割り当て済みのブロックのうちの一つのブロックを、前記共通フリーブロック群に返却して任意の領域用の新たな書き込み先ブロックとして再使用可能にするためのコマンド、または前記複数のブロックのうちの一つのブロックに対する消去動作を実行するためのコマンドである請求項13記載の制御方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019013223A JP7159069B2 (ja) | 2019-01-29 | 2019-01-29 | メモリシステムおよび制御方法 |
US16/564,396 US11074015B2 (en) | 2019-01-29 | 2019-09-09 | Memory system and method for controlling nonvolatile memory by a host |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019013223A JP7159069B2 (ja) | 2019-01-29 | 2019-01-29 | メモリシステムおよび制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2020123041A true JP2020123041A (ja) | 2020-08-13 |
JP7159069B2 JP7159069B2 (ja) | 2022-10-24 |
Family
ID=71731928
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019013223A Active JP7159069B2 (ja) | 2019-01-29 | 2019-01-29 | メモリシステムおよび制御方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11074015B2 (ja) |
JP (1) | JP7159069B2 (ja) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210051803A (ko) * | 2019-10-31 | 2021-05-10 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 컨트롤러 |
JP7353934B2 (ja) * | 2019-11-19 | 2023-10-02 | キオクシア株式会社 | メモリシステムおよび制御方法 |
JP2021114038A (ja) * | 2020-01-16 | 2021-08-05 | キオクシア株式会社 | メモリシステムおよび制御方法 |
JP7443195B2 (ja) * | 2020-08-21 | 2024-03-05 | キオクシア株式会社 | メモリシステムおよび制御方法 |
US11733920B2 (en) | 2020-09-10 | 2023-08-22 | Western Digital Technologies, Inc. | NVMe simple copy command support using dummy virtual function |
US11928515B2 (en) | 2020-12-09 | 2024-03-12 | Dell Products L.P. | System and method for managing resource allocations in composed systems |
US11934875B2 (en) | 2020-12-09 | 2024-03-19 | Dell Products L.P. | Method and system for maintaining composed systems |
US11556268B2 (en) | 2021-04-22 | 2023-01-17 | Western Digital Technologies, Inc. | Cache based flow for a simple copy command |
US11947697B2 (en) * | 2021-07-22 | 2024-04-02 | Dell Products L.P. | Method and system to place resources in a known state to be used in a composed information handling system |
US12013768B2 (en) | 2021-07-22 | 2024-06-18 | Dell Products L.P. | Method and system for automated healing of hardware resources in a composed information handling system |
US12008412B2 (en) | 2021-07-28 | 2024-06-11 | Dell Products | Resource selection for complex solutions |
US11928506B2 (en) | 2021-07-28 | 2024-03-12 | Dell Products L.P. | Managing composition service entities with complex networks |
US11775207B2 (en) * | 2022-02-15 | 2023-10-03 | Micron Technology, Inc. | Techniques to perform a write operation |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011128998A (ja) * | 2009-12-18 | 2011-06-30 | Toshiba Corp | 半導体記憶装置 |
JP2012221251A (ja) * | 2011-04-08 | 2012-11-12 | Toshiba Corp | メモリシステムの制御方法、情報処理装置、及びプログラム |
WO2015075837A1 (ja) * | 2013-11-25 | 2015-05-28 | 株式会社日立製作所 | ストレージ装置及びその制御方法 |
WO2015177849A1 (ja) * | 2014-05-19 | 2015-11-26 | 富士通株式会社 | 多重化記憶装置及び多重化記憶制御方法 |
JP2016212580A (ja) * | 2015-05-07 | 2016-12-15 | 富士通株式会社 | 半導体記憶装置、半導体記憶装置の制御方法および制御プログラム |
JP2017162067A (ja) * | 2016-03-08 | 2017-09-14 | 東芝メモリ株式会社 | ストレージシステム、情報処理システムおよび制御方法 |
JP2017228172A (ja) * | 2016-06-23 | 2017-12-28 | 富士通株式会社 | 情報処理システム |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3611280B2 (ja) | 1997-09-30 | 2005-01-19 | シャープ株式会社 | 不揮発性半導体記憶装置 |
JP2010267341A (ja) | 2009-05-15 | 2010-11-25 | Renesas Electronics Corp | 半導体装置 |
US8850103B2 (en) | 2009-08-28 | 2014-09-30 | Microsoft Corporation | Interruptible NAND flash memory |
US9092337B2 (en) * | 2011-01-31 | 2015-07-28 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for managing eviction of data |
US10268386B2 (en) * | 2016-12-28 | 2019-04-23 | Western Digital Technologies, Inc. | Data storage device including temporary storage locations |
JP7279889B2 (ja) * | 2017-11-07 | 2023-05-23 | ホアウェイ・テクノロジーズ・カンパニー・リミテッド | メモリブロックリクレーム方法およびメモリブロックリクレーム装置 |
-
2019
- 2019-01-29 JP JP2019013223A patent/JP7159069B2/ja active Active
- 2019-09-09 US US16/564,396 patent/US11074015B2/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011128998A (ja) * | 2009-12-18 | 2011-06-30 | Toshiba Corp | 半導体記憶装置 |
JP2012221251A (ja) * | 2011-04-08 | 2012-11-12 | Toshiba Corp | メモリシステムの制御方法、情報処理装置、及びプログラム |
WO2015075837A1 (ja) * | 2013-11-25 | 2015-05-28 | 株式会社日立製作所 | ストレージ装置及びその制御方法 |
WO2015177849A1 (ja) * | 2014-05-19 | 2015-11-26 | 富士通株式会社 | 多重化記憶装置及び多重化記憶制御方法 |
JP2016212580A (ja) * | 2015-05-07 | 2016-12-15 | 富士通株式会社 | 半導体記憶装置、半導体記憶装置の制御方法および制御プログラム |
JP2017162067A (ja) * | 2016-03-08 | 2017-09-14 | 東芝メモリ株式会社 | ストレージシステム、情報処理システムおよび制御方法 |
JP2017228172A (ja) * | 2016-06-23 | 2017-12-28 | 富士通株式会社 | 情報処理システム |
Also Published As
Publication number | Publication date |
---|---|
US11074015B2 (en) | 2021-07-27 |
US20200241798A1 (en) | 2020-07-30 |
JP7159069B2 (ja) | 2022-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7159069B2 (ja) | メモリシステムおよび制御方法 | |
JP6785205B2 (ja) | メモリシステムおよび制御方法 | |
TWI674502B (zh) | 記憶體系統及控制方法 | |
US11797436B2 (en) | Memory system and method for controlling nonvolatile memory | |
JP7358594B2 (ja) | メモリシステム | |
US11675544B2 (en) | Memory system for controlling nonvolatile memory including a plurality of nonvolatile memory dies each including a plurality of physical blocks | |
JP7381678B2 (ja) | メモリシステム | |
JP7392080B2 (ja) | メモリシステム | |
JP2019133391A (ja) | メモリシステムおよび制御方法 | |
JP2021033845A (ja) | メモリシステムおよび制御方法 | |
JP2021007059A (ja) | メモリシステム | |
JP2023107418A (ja) | ストレージデバイスおよびストレージシステム | |
JP2019212103A (ja) | メモリシステム | |
JP7167295B2 (ja) | メモリシステムおよび制御方法 | |
JP7204020B2 (ja) | 制御方法 | |
JP7490714B2 (ja) | メモリシステムおよび制御方法 | |
JP2022179798A (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: 20220726 |
|
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: 20220913 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20221012 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 7159069 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |