JP7143232B2 - メモリシステムおよび制御方法 - Google Patents
メモリシステムおよび制御方法 Download PDFInfo
- Publication number
- JP7143232B2 JP7143232B2 JP2019013222A JP2019013222A JP7143232B2 JP 7143232 B2 JP7143232 B2 JP 7143232B2 JP 2019013222 A JP2019013222 A JP 2019013222A JP 2019013222 A JP2019013222 A JP 2019013222A JP 7143232 B2 JP7143232 B2 JP 7143232B2
- Authority
- JP
- Japan
- Prior art keywords
- write
- read
- data
- host
- block
- 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
- 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
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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/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/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/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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
- Read Only Memory (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に一時的に格納されてもよい。
本実施形態においては、各ライトコマンドは、書き込まれるべきデータ(ライトデータ)が格納されているホスト2のライトバッファ(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が書き込み先ブロックおよびこの書き込み先ブロック内の書き込み先位置の双方を決定するという構成が利用されるケースにおいては、ライトデータが書き込まれるべき記憶位置を示す物理アドレスを指定するタイプのライトコマンドが使用される。
ライト制御部21は、ライトバッファ内の記憶位置情報とQoSドメインIDとタグとを指定するライトコマンドをホスト2から受信する。タグは、書き込むべきデータ(ユーザデータ)を識別可能な識別子であり、例えば、LBAであってもよいし、あるいはキー・バリュー・ストアのキーであってもよいし、このキーのハッシュ値であってもよい。ライトコマンドを受信した場合、ライト制御部21は、共通ブロック群602のうちの一つのブロックを選択し、選択したブロックを、ライトコマンドによって指定されたQoSドメインIDに対応するQoSドメイン用の書き込み先ブロックとして割り当てる。このQoSドメイン用の書き込み先ブロックとして割り当てられるブロックは、物理ブロックであってもよいし、スーパーブロックであってもよい。
一つの物理ブロックが書き込み先ブロックとして割り当てられたケースにおいては、ブロックアドレスは、この物理ブロックを識別するためのブロックアドレスである。このブロックアドレスはチップ番号とこのチップ内のブロック番号とによって表されてもよい。
ホスト2が書き込み先ブロックおよびこの書き込み先ブロック内の書き込み先位置の双方を決定するという構成が利用されるケース、またはフラッシュストレージデバイス3が書き込み先ブロックおよびこの書き込み先ブロック内の書き込み先位置の双方を決定するという構成が利用されるケースのいずれにおいても、物理アドレス(すなわち、ブロックアドレスおよびオフセット)を指定するリードコマンドを使用することができる。
本実施形態では、ライトデータの書き込み動作が終了(例えばフォギー書き込み動作とファイン書き込み動作の双方が終了)してこのライトデータが読み出し可能となる前に、このライトデータを読み出し対象データとして指定するリードコマンドがホスト2から受信された場合には、リード制御部22は、ホスト2のライトバッファからこの読み出し対象データを読み出し、この読み出したデータをホスト2に返す。したがって、ホスト2は、リードすべきデータがNAND型フラッシュメモリ5から読み出し可能であるか否かをチェックする処理およびライトバッファに向けたリード要求とフラッシュストレージデバイス3に向けたリードコマンドを選択的に発行する処理を行わずとも、フラッシュストレージデバイス3に向けたリードコマンドそれぞれを発行するというシンプルな処理を行うだけで、所望のデータをフラッシュストレージデバイス3から受け取ることができる。
DRAMインタフェース14は、CPU12の制御の下、DRAM6を制御するように構成されたDRAM制御回路である。DRAM6の記憶領域は、ブロック管理テーブル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、物理アドレス、長さ、リードバッファアドレスを含んでもよい。
QoSドメインクリエートコマンドは、QoSドメインを作成するためのコマンドである。このQoSドメインクリエートコマンドは、コマンドID、QoSドメインID、容量を含んでもよい。
コマンドIDはこのコマンド(このQoSドメインクリエートコマンド)の固有の識別子である。QoSドメインIDは、作成すべきQoSドメインの識別子である。容量は、作成すべきQoSドメイン用に確保すべき容量を示す。コントローラ4は、この容量に対応する個数のブロックを共通ブロック群602から確保し、このQoSドメインIDを指定するライトコマンドに応じて、この確保されたブロックのうちの一つのブロックをこのQoSドメイン用の書き込み先ブロックとして割り当てる。
ライトバッファ解放要求は、NAND型フラッシュメモリ5への書き込みが終了することによってNAND型フラッシュメモリ5から読み出し可能になったデータが格納されているライトバッファ内の領域を解放するために使用される。ライトバッファ解放要求は、ライトコマンドIDを含んでいてもよい。ライトコマンドIDは、解放可能なライトデータに対応するライトコマンドの識別子である。例えば、あるライトコマンドに関連付けられたライトデータの書き込みが終了した場合、フラッシュストレージデバイス3のコントローラ4は、このライトコマンドの識別子(コマンドID)を含むライトバッファ解放要求をホスト2に送信してもよい。あるいは、ライトバッファ解放要求は、ライトバッファ内の解放可能領域を示す記憶位置情報を含んでいてもよい。
ブロックアドレスはある一つのブロック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内の不良ブロック、不良ページなどを管理する必要がなくなる。
ここでは、4つのワード線を往復する場合のフォギー・ファイン書き込み動作を例示する。また、ここでは、NAND型フラッシュメモリ5が、メモリセル当たりに4ビットのデータを格納するQLC-フラッシュである場合を想定する。NAND型フラッシュメモリ5内の一つの特定の書き込み先ブロック(ここでは、書き込み先ブロックBLK#1)に対するフォギー・ファイン書き込み動作は以下のように実行される。
(1)ホストFTL701があるユーザアプリケーションからのリード要求を受信した場合、ホストFTL701は、ホストFTL701内のLUTを参照して、このリード要求によって指定されるLBAのようなタグに対応する物理アドレスを取得する。ホストFTL701は、このユーザアプリケーションに対応するQoSドメインのQoSドメインIDと、取得した物理アドレス(ブロックアドレスとオフセット)と、長さと、リードバッファアドレスとを指定するリードコマンドを、フラッシュストレージデバイス3に送信する。
(1)ホストFTL701があるユーザアプリケーションからのリード要求を受信した場合、ホストFTL701は、ホストFTL701内のLUTを参照して、このリード要求によって指定されるLBAのようなタグに対応する物理アドレスを取得する。ホストFTL701は、このユーザアプリケーションに対応するQoSドメインのQoSドメインIDと、取得した物理アドレス(ブロックアドレスとオフセット)と、長さと、リードバッファアドレスとを指定するリードコマンドを、フラッシュストレージデバイス3に送信する。
図18は、フラッシュストレージデバイス3のコントローラ4によって管理される、複数のQoSドメインと共通フラッシュブロックプールとの関係を示す。
コントローラ4がQoSドメイン#0のQoSドメインID#0を指定するライトコマンドを受信した場合、コントローラ4は、QoSドメイン#0用の書き込み先ブロック(オープンブロック)が割り当て済みであるか否かを判定する。
コピー先ブロック全体がホストからのデータで満たされると、コントローラ4は、このコピー先ブロックをフラッシュブロックプール#0によって管理するとともに(クローズ)、共通フラッシュブロックプール801の内のフリーブロックをQoSドメイン#0用の新たなコピー先ブロック(オープンブロック)として割り当てる。
例えば、ブロックBLK#1に対応するブロック管理テーブル32においては、ブロックBLK#1の状態を管理するためのメタデータとして、コマンド数カウンタ(以下、イン・フライトコマンド数カウンタと称する)が追加されている。
データ書き込み動作が終了してライトデータが読み出し可能となった場合、コントローラ4は、このイン・フライトコマンド数カウンタ値を1減少する。
リードコマンドによって指定された読み出し対象データをライトバッファから読み出してホスト2に返す読み出し動作が終了した場合、コントローラ4は、このイン・フライトコマンド数カウンタ値を1減少する。
イン・フライトコマンド数カウンタ値が零になった場合、コントローラ4は、このライトデータが格納されているライトバッファ内の領域を解放するためのライトバッファ解放要求をホスト2に送信する。このライトバッファ解放要求はこのライトコマンドのコマンドIDを含む。
図20のフローチャートは、コントローラ4によって実行されるイン・フライトコマンド数カウンタ更新処理の手順を示す。
データ書き込み動作の実行中に、このライトデータを読み出し対象データとして指定するリードコマンドが受信されたならば(ステップS18のYES)、コントローラ4は、イン・フライトコマンド数カウンタ値を1増やす(ステップS19)。そして、このリードコマンドの実行が完了すると(ステップS20のYES)、コントローラ4は、イン・フライトコマンド数カウンタ値を1減らす(ステップS21)。
図21のフローチャートは、データ読み出し動作の手順を示す。
ライトデータが格納されているライトバッファ内の記憶位置を示す記憶位置情報を指定するライトコマンドをホスト2から受信すると(ステップS31)、コントローラ4は、この記憶位置情報に基づいて、このライトデータをライトバッファから取得する(ステップS32)。コントローラ4は、NAND型フラッシュメモリ5に含まれる複数のブロックから選択された書き込み先ブロック内の書き込み先位置に書き込む書き込み動作を実行する(ステップS33)。
ホスト2からリードコマンドを受信すると(ステップS41のYES)、コントローラ4は、このリードコマンドによって指定された読み出し対象データが書き込み先ブロックから読み出し可能であり且つこの読み出し対象データがライトバッファに存在しているか否かを判定する(ステップS42)。
このリードコマンドの実行が管理用するまで、つまりこの読み出し動作が終了するまで、コントローラ3は、このライトデータが格納されているライトバッファ内の領域の解放を禁止する(ステップS44)。すなわち、読み出し動作の実行中は、コントローラ3は、このライトデータが格納されているライトバッファ内の領域を解放するためのライトバッファ解放要求をホスト2に送信しない。これにより、このライトデータの一部分または全てである読み出し対象データの読み出し動作が終了するまで、この読み出し対象データをライトバッファに維持することができる。
上述の図23のフローチャートで説明したデータ読み出し動作は、リードレイテンシの低減を優先するために、読み出し対象データをライトバッファから読み出した。図24のフローチャートで説明するデータ読み出し動作では、読み出し可能なデータが格納されているライトバッファ内の領域をできるだけ早期に解放することを優先するために、読み出し対象データは、ライトバッファからではなく、以下説明するように、書き込み先ブロックから読み出される。
<ブロックアドレスを指定するライトコマンド>
このライトコマンドは、コマンドID、QoSドメインID、物理アドレス、タグ、長さ、ライトバッファアドレス、等を含んでもよい。
タグは、書き込まれるべきライトデータを識別するための識別子である。このタグは、上述したように、LBAのような論理アドレスであってもよいし、キー・バリュー・ストアのキーであってもよいし、このキーのハッシュ値であってもよい。
ライトバッファアドレスは、書き込まれるべきライトデータが格納されているホストメモリ(ホスト2のライトバッファ)内の位置を示す。ライトバッファアドレスは、データポインタとしても参照される。
このライトコマンドは、コマンドID、QoSドメインID、物理アドレス、タグ、長さ、ライトバッファアドレス、等を含んでもよい。
コマンドIDはこのコマンド(このライトコマンド)の固有の識別子である。QoSドメインIDは、データが書き込まれるべきQoSドメインを一意に識別可能な識別子である。あるエンドユーザに対応するアプリケーションからのライト要求に応じてホスト2から送信されるライトコマンドは、このエンドユーザに対応するQoSドメインを指定するQoSドメインIDを含む。
タグは、書き込まれるべきライトデータを識別するための識別子である。このタグは、上述したように、LBAのような論理アドレスであってもよいし、キー・バリュー・ストアのキーであってもよいし、このキーのハッシュ値であってもよい。
ライトバッファアドレスは、書き込まれるべきライトデータが格納されているホストメモリ(ホスト2のライトバッファ)内の位置を示す。
Claims (9)
- ホストに接続可能なメモリシステムであって、
複数のブロックを含む不揮発性メモリと、
前記不揮発性メモリに電気的に接続され、前記不揮発性メモリを制御するように構成されたコントローラとを具備し、
前記コントローラは、
ライトデータが格納されている前記ホストのライトバッファ内の記憶位置を示す記憶位置情報を指定するライトコマンドを前記ホストから受信し、
前記記憶位置情報に基づいて前記ライトデータを前記ホストのライトバッファから取得し、
前記ライトデータを前記複数のブロックから選択された書き込み先ブロックの書き込み先位置に書き込む書き込み動作を実行し、
前記書き込み動作が終了して前記ライトデータが前記不揮発性メモリから読み出し可能となる前に、前記ライトデータを読み出し対象データとして指定する第1のリードコマンドが前記ホストから受信された場合、前記読み出し対象データを前記ライトバッファから読み出す動作と前記読み出した前記読み出し対象データを前記ホストに返す動作とを含む読み出し動作を実行し、
前記第1のリードコマンドの実行が完了するまで、前記ライトデータが格納されている前記ライトバッファ内の領域の解放を禁止し、
前記ホストから受信されたリードコマンドによって指定される読み出し対象データが前記書き込み先ブロックから読み出し可能であり、且つ前記読み出し対象データが前記ライトバッファに存在する場合、前記読み出し対象データを前記ライトバッファから読み出す動作と前記読み出した前記読み出し対象データを前記ホストに返す動作とを含む読み出し動作を実行するように構成されている、メモリシステム。 - 前記コントローラは、前記第1のリードコマンドの実行が完了した後に、前記ライトデータが格納されている前記ライトバッファ内の領域を解放するための解放要求をホストに送信するように構成されている請求項1記載のメモリシステム。
- ホストに接続可能なメモリシステムであって、
複数のブロックを含む不揮発性メモリと、
前記不揮発性メモリに電気的に接続され、前記不揮発性メモリを制御するように構成されたコントローラとを具備し、
前記コントローラは、
ライトデータが格納されている前記ホストのライトバッファ内の記憶位置を示す記憶位置情報を指定するライトコマンドを前記ホストから受信し、
前記記憶位置情報に基づいて前記ライトデータを前記ホストのライトバッファから取得し、
前記ライトデータを前記複数のブロックから選択された書き込み先ブロックの書き込み先位置に書き込む書き込み動作を実行し、
前記書き込み動作が終了して前記ライトデータが前記不揮発性メモリから読み出し可能となる前に、前記ライトデータを読み出し対象データとして指定する第1のリードコマンドが前記ホストから受信された場合、前記読み出し対象データを前記ライトバッファから読み出す動作と前記読み出した前記読み出し対象データを前記ホストに返す動作とを含む読み出し動作を実行し、
前記第1のリードコマンドの実行が完了するまで、前記ライトデータが格納されている前記ライトバッファ内の領域の解放を禁止し、
前記ライトデータの前記書き込み動作は、前記ライトデータを前記不揮発性メモリに複数回転送することを含む複数回の書き込みステップによって実行され、
前記コントローラは、
第1のカウンタ値を、前記書き込み動作に必要な前記書き込みステップの回数に1を加えた値に設定し、
1回の書き込みステップの終了の度に前記第1のカウンタ値を1減少し、
前記書き込み動作が終了して前記ライトデータが読み出し可能となった場合、前記第1のカウンタ値を1減少し、
前記書き込み動作の実行中に前記第1のリードコマンドを受信した場合、前記第1のカウンタ値を1増やし、
前記読み出し動作が終了した場合、前記第1のカウンタ値を1減少し、
前記第1のカウンタ値が零になった場合、前記ライトデータが格納されている前記ライトバッファ内の領域を解放するための解放要求を前記ホストに送信するように構成されている、メモリシステム。 - 前記コントローラは、前記ホストから受信されたリードコマンドによって指定される読み出し対象データが前記書き込み先ブロックから読み出し可能であり、且つ前記読み出し対象データが前記ライトバッファに存在する場合、前記読み出し対象データを前記書き込み先ブロックから読み出す動作と前記読み出した前記読み出し対象データを前記ホストに返す動作とを含む読み出し動作を実行するように構成されている請求項3記載のメモリシステム。
- ホストに接続可能なメモリシステムであって、
複数のブロックを含む不揮発性メモリと、
前記不揮発性メモリに電気的に接続され、前記不揮発性メモリを制御するように構成されたコントローラとを具備し、
前記コントローラは、
ライトデータが格納されている前記ホストのライトバッファ内の記憶位置を示す記憶位置情報を指定するライトコマンドを前記ホストから受信し、
前記記憶位置情報に基づいて前記ライトデータを前記ホストのライトバッファから取得し、
前記ライトデータを前記複数のブロックから選択された書き込み先ブロックの書き込み先位置に書き込む書き込み動作を実行し、
前記書き込み動作が終了して前記ライトデータが前記不揮発性メモリから読み出し可能となる前に、前記ライトデータを読み出し対象データとして指定する第1のリードコマンドが前記ホストから受信された場合、前記読み出し対象データを前記ライトバッファから読み出す動作と前記読み出した前記読み出し対象データを前記ホストに返す動作とを含む読み出し動作を実行し、
前記書き込み動作が終了して前記ライトデータが前記不揮発性メモリから読み出し可能となり、且つ前記第1のリードコマンドの実行が完了した後に、前記ライトデータが格納されている前記ライトバッファ内の領域を解放するための解放要求を前記ホストに送信し、
前記ホストから受信されたリードコマンドによって指定される読み出し対象データが前記書き込み先ブロックから読み出し可能であり、且つ前記読み出し対象データが前記ライトバッファに存在する場合、前記読み出し対象データを前記ライトバッファから読み出す動作と前記読み出した前記読み出し対象データを前記ホストに返す動作とを含む読み出し動作を実行するように構成されている、メモリシステム。 - 複数のブロックを含む不揮発性メモリを制御する制御方法であって、
ライトデータが格納されているホストのライトバッファ内の記憶位置を示す記憶位置情報を指定するライトコマンドを前記ホストから受信することと、
前記記憶位置情報に基づいて前記ライトデータを前記ホストのライトバッファから取得することと、
前記ライトデータを前記複数のブロックから選択された書き込み先ブロックの書き込み先位置に書き込む書き込み動作を実行することと、
前記書き込み動作が終了して前記ライトデータが前記不揮発性メモリから読み出し可能となる前に、前記ライトデータを読み出し対象データとして指定する第1のリードコマンドが前記ホストから受信された場合、前記読み出し対象データを前記ライトバッファから読み出す動作と前記読み出した前記読み出し対象データを前記ホストに返す動作とを含む読み出し動作を実行することと、
前記第1のリードコマンドの実行が完了するまで、前記ライトデータが格納されている前記ライトバッファ内の領域の解放を禁止することと、
前記ホストから受信されたリードコマンドによって指定される読み出し対象データが前記書き込み先ブロックから読み出し可能であり、且つ前記読み出し対象データが前記ライトバッファに存在する場合、前記読み出し対象データを前記ライトバッファから読み出す動作と前記読み出した前記読み出し対象データを前記ホストに返す動作とを含む読み出し動作を実行することとを具備する制御方法。 - 前記第1のリードコマンドの実行が完了した後に、前記ライトデータが格納されている前記ライトバッファ内の領域を解放するための解放要求をホストに送信することをさらに具備する請求項6記載の制御方法。
- 複数のブロックを含む不揮発性メモリを制御する制御方法であって、
ライトデータが格納されているホストのライトバッファ内の記憶位置を示す記憶位置情報を指定するライトコマンドを前記ホストから受信することと、
前記記憶位置情報に基づいて前記ライトデータを前記ホストのライトバッファから取得することと、
前記ライトデータを前記複数のブロックから選択された書き込み先ブロックの書き込み先位置に書き込む書き込み動作を実行することと、
前記書き込み動作が終了して前記ライトデータが前記不揮発性メモリから読み出し可能となる前に、前記ライトデータを読み出し対象データとして指定する第1のリードコマンドが前記ホストから受信された場合、前記読み出し対象データを前記ライトバッファから読み出す動作と前記読み出した前記読み出し対象データを前記ホストに返す動作とを含む読み出し動作を実行することと、
前記第1のリードコマンドの実行が完了するまで、前記ライトデータが格納されている前記ライトバッファ内の領域の解放を禁止することと、を具備し、
前記ライトデータの前記書き込み動作は、前記ライトデータを前記不揮発性メモリに複数回転送することを含む複数回の書き込みステップによって実行され、
第1のカウンタ値を、前記書き込み動作に必要な前記書き込みステップの回数に1を加えた値に設定することと、
1回の書き込みステップの終了の度に前記第1のカウンタ値を1減少することと、
前記書き込み動作が終了して前記ライトデータが読み出し可能となった場合、前記第1のカウンタ値を1減少することと、
前記書き込み動作の実行中に前記第1のリードコマンドを受信した場合、前記第1のカウンタ値を1増やすことと、
前記読み出し動作が終了した場合、前記第1のカウンタ値を1減少することと、
前記第1のカウンタ値が零になった場合、前記ライトデータが格納されている前記ライトバッファ内の領域を解放するための解放要求を前記ホストに送信することとをさらに具備する、制御方法。 - 前記ホストから受信されたリードコマンドによって指定される読み出し対象データが前記書き込み先ブロックから読み出し可能であり、且つ前記読み出し対象データが前記ライトバッファに存在する場合、前記読み出し対象データを前記書き込み先ブロックから読み出す動作と前記読み出した前記読み出し対象データを前記ホストに返す動作とを含む読み出し動作を実行することをさらに具備する請求項8記載の制御方法。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019013222A JP7143232B2 (ja) | 2019-01-29 | 2019-01-29 | メモリシステムおよび制御方法 |
US16/564,376 US11262943B2 (en) | 2019-01-29 | 2019-09-09 | Memory system and method for controlling nonvolatile memory with a host memory buffer |
US17/572,713 US11656800B2 (en) | 2019-01-29 | 2022-01-11 | Memory system and method for controlling nonvolatile memory with a host memory buffer |
JP2022142772A JP7381678B2 (ja) | 2019-01-29 | 2022-09-08 | メモリシステム |
US18/301,522 US20230251798A1 (en) | 2019-01-29 | 2023-04-17 | Memory system and method for controlling nonvolatile memory with a host memory buffer |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019013222A JP7143232B2 (ja) | 2019-01-29 | 2019-01-29 | メモリシステムおよび制御方法 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022142772A Division JP7381678B2 (ja) | 2019-01-29 | 2022-09-08 | メモリシステム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2020123040A JP2020123040A (ja) | 2020-08-13 |
JP7143232B2 true JP7143232B2 (ja) | 2022-09-28 |
Family
ID=71733713
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019013222A Active JP7143232B2 (ja) | 2019-01-29 | 2019-01-29 | メモリシステムおよび制御方法 |
JP2022142772A Active JP7381678B2 (ja) | 2019-01-29 | 2022-09-08 | メモリシステム |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022142772A Active JP7381678B2 (ja) | 2019-01-29 | 2022-09-08 | メモリシステム |
Country Status (2)
Country | Link |
---|---|
US (3) | US11262943B2 (ja) |
JP (2) | JP7143232B2 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7155028B2 (ja) | 2019-01-29 | 2022-10-18 | キオクシア株式会社 | メモリシステムおよび制御方法 |
KR20210101973A (ko) * | 2020-02-11 | 2021-08-19 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
US11709664B2 (en) * | 2020-06-02 | 2023-07-25 | SambaNova Systems, Inc. | Anti-congestion flow control for reconfigurable processors |
US11442696B1 (en) | 2021-03-23 | 2022-09-13 | SambaNova Systems, Inc. | Floating point multiply-add, accumulate unit with exception processing |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009098910A (ja) | 2007-10-16 | 2009-05-07 | Kyocera Mita Corp | 電子機器およびメモリ管理プログラム |
JP2017162068A (ja) | 2016-03-08 | 2017-09-14 | 東芝メモリ株式会社 | ストレージシステム、情報処理システムおよび制御方法 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1173784A (ja) | 1997-08-28 | 1999-03-16 | Nec Corp | 半導体記憶装置及び該装置のデータ読出し方法 |
JPH11144476A (ja) | 1997-11-04 | 1999-05-28 | Hitachi Ltd | 半導体不揮発性メモリ |
US5948081A (en) * | 1997-12-22 | 1999-09-07 | Compaq Computer Corporation | System for flushing queued memory write request corresponding to a queued read request and all prior write requests with counter indicating requests to be flushed |
US6571312B1 (en) | 1999-02-19 | 2003-05-27 | Mitsubishi Denki Kabushiki Kaisha | Data storage method and data processing device using an erasure block buffer and write buffer for writing and erasing data in memory |
JP4082913B2 (ja) * | 2002-02-07 | 2008-04-30 | 株式会社ルネサステクノロジ | メモリシステム |
JP4661497B2 (ja) | 2005-09-27 | 2011-03-30 | Tdk株式会社 | メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 |
US7711889B2 (en) * | 2006-07-31 | 2010-05-04 | Kabushiki Kaisha Toshiba | Nonvolatile memory system, and data read/write method for nonvolatile memory system |
US8566506B2 (en) * | 2009-08-07 | 2013-10-22 | Intel Corporation | Tracking a lifetime of write operations to a non-volatile memory storage |
JP2012128660A (ja) | 2010-12-15 | 2012-07-05 | Toshiba Corp | 半導体記憶装置 |
US20130318285A1 (en) * | 2012-05-23 | 2013-11-28 | Violin Memory Inc | Flash memory controller |
US9652376B2 (en) * | 2013-01-28 | 2017-05-16 | Radian Memory Systems, Inc. | Cooperative flash memory control |
KR102106261B1 (ko) | 2014-06-17 | 2020-05-04 | 삼성전자주식회사 | 메모리 컨트롤러의 작동 방법과 이를 포함하는 장치들의 작동 방법들 |
KR102466412B1 (ko) * | 2016-01-14 | 2022-11-15 | 삼성전자주식회사 | 스토리지 장치 및 스토리지 장치의 동작 방법 |
US10642496B2 (en) * | 2016-04-01 | 2020-05-05 | Sandisk Technologies Inc. | Out of order read transfer with host memory buffer |
JP6538741B2 (ja) | 2017-03-09 | 2019-07-03 | 株式会社東芝 | 管理装置、情報処理装置および管理方法 |
KR102395190B1 (ko) * | 2017-07-31 | 2022-05-06 | 삼성전자주식회사 | 호스트와 인터페이스를 수행하는 스토리지 장치, 호스트 및 스토리지 장치의 동작방법 |
US20200241794A1 (en) * | 2019-01-24 | 2020-07-30 | Goke Us Research Laboratory | Low latency swap device, system and method |
-
2019
- 2019-01-29 JP JP2019013222A patent/JP7143232B2/ja active Active
- 2019-09-09 US US16/564,376 patent/US11262943B2/en active Active
-
2022
- 2022-01-11 US US17/572,713 patent/US11656800B2/en active Active
- 2022-09-08 JP JP2022142772A patent/JP7381678B2/ja active Active
-
2023
- 2023-04-17 US US18/301,522 patent/US20230251798A1/en active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009098910A (ja) | 2007-10-16 | 2009-05-07 | Kyocera Mita Corp | 電子機器およびメモリ管理プログラム |
JP2017162068A (ja) | 2016-03-08 | 2017-09-14 | 東芝メモリ株式会社 | ストレージシステム、情報処理システムおよび制御方法 |
Also Published As
Publication number | Publication date |
---|---|
US20230251798A1 (en) | 2023-08-10 |
JP2020123040A (ja) | 2020-08-13 |
JP7381678B2 (ja) | 2023-11-15 |
US20200241797A1 (en) | 2020-07-30 |
US11656800B2 (en) | 2023-05-23 |
JP2022171773A (ja) | 2022-11-11 |
US11262943B2 (en) | 2022-03-01 |
US20220129207A1 (en) | 2022-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113138713B (zh) | 存储器系统 | |
JP7159069B2 (ja) | メモリシステムおよび制御方法 | |
JP7155028B2 (ja) | メモリシステムおよび制御方法 | |
JP7143232B2 (ja) | メモリシステムおよび制御方法 | |
US20220066693A1 (en) | System and method of writing to nonvolatile memory using write buffers | |
US20240264776A1 (en) | Memory system and method of controlling nonvolatile memory and for reducing a buffer size | |
JP2021033849A (ja) | メモリシステムおよび制御方法 | |
JP2021081981A (ja) | メモリシステムおよび制御方法 | |
JP2021033848A (ja) | メモリシステムおよび制御方法 | |
JP7392080B2 (ja) | メモリシステム | |
JP2021033845A (ja) | メモリシステムおよび制御方法 | |
JP2019212103A (ja) | メモリシステム | |
JP2023107418A (ja) | ストレージデバイスおよびストレージシステム | |
JP7337228B2 (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: 20220615 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20220621 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20220727 |
|
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: 20220816 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20220914 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 7143232 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |