JP2020123038A - メモリシステムおよび制御方法 - Google Patents
メモリシステムおよび制御方法 Download PDFInfo
- Publication number
- JP2020123038A JP2020123038A JP2019013220A JP2019013220A JP2020123038A JP 2020123038 A JP2020123038 A JP 2020123038A JP 2019013220 A JP2019013220 A JP 2019013220A JP 2019013220 A JP2019013220 A JP 2019013220A JP 2020123038 A JP2020123038 A JP 2020123038A
- Authority
- JP
- Japan
- Prior art keywords
- write
- data
- block
- host
- 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/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/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/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)
- 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に一時的に格納されてもよい。
本実施形態においては、各ライトコマンドは、書き込まれるべきデータ(ライトデータ)が格納されているホスト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を介して相互接続される。
本実施形態では、ライトコマンドとしては、QoSドメインIDとタグとを指定し物理アドレスを指定しないタイプのライトコマンドが使用されてもよい。
本実施形態では、ライトデータの書き込み動作が終了(例えばフォギー書き込み動作とファイン書き込み動作の双方が終了)してこのライトデータが読み出し可能となる前に、このライトデータを読み出し対象データとして指定するリードコマンドがホスト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に送信してもよい。あるいは、ライトバッファ解放要求は、ライトバッファ内の解放可能領域を示す記憶位置情報を含んでいてもよい。
コントローラ4は、ライトデータの書き込み動作が失敗した場合、現在の書き込み先ブロックとは異なる別のブロック内の書き込み先位置にこのライトデータを書き込む再書き込み動作を実行する。アドレス変更要求は、ホスト2に既に通知したライトデータの物理アドレスを新たな物理アドレスに変更するために使用される。
図12は、物理アドレスを規定するブロックアドレスおよびオフセットを示す。
ページサイズ(各ページのユーザデータ格納領域)が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型フラッシュメモリチップからそれぞれ選択されたブロックであってもよい。
図14では、QoSドメイン#0、QoSドメイン#1、QoSドメイン#2、…、QoSドメイン#n−1が既に作成されている場合が明示されている。図14では、これら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は、QoSドメインID、タグ、ライトバッファアドレスを指定するライトコマンドをフラッシュストレージデバイス3に送信する。
(8)ライトデータの書き込みが終了してこのライトデータがNAND型フラッシュメモリ5から読み出し可能になった後、コントローラ4は、このライトデータが格納されているライトバッファ702内の領域を解放するための解放要求をホスト2に送出する。
(1)ホストFTL701があるユーザアプリケーションからのリード要求を受信した場合、ホストFTL701は、ホストFTL701内のLUTを参照して、このリード要求によって指定されるLBAのようなタグに対応する物理アドレスを取得する。ホストFTL701は、このユーザアプリケーションに対応するQoSドメインのQoSドメインIDと、取得した物理アドレス(ブロックアドレスとオフセット)と、長さと、リードバッファアドレスとを指定するリードコマンドを、フラッシュストレージデバイス3に送信する。
(1)ホストFTL701があるユーザアプリケーションからのリード要求を受信した場合、ホストFTL701は、ホストFTL701内のLUTを参照して、このリード要求によって指定されるLBAのようなタグに対応する物理アドレスを取得する。ホストFTL701は、このユーザアプリケーションに対応するQoSドメインのQoSドメインIDと、取得した物理アドレス(ブロックアドレスとオフセット)と、長さと、リードバッファアドレスとを指定するリードコマンドを、フラッシュストレージデバイス3に送信する。
図20は、フラッシュストレージデバイス3のコントローラ4によって管理される、複数のQoSドメインと共通フラッシュブロックプールとの関係を示す。
コントローラ4がQoSドメイン#0のQoSドメインID#0を指定するライトコマンドを受信した場合、コントローラ4は、QoSドメイン#0用の書き込み先ブロック(オープンブロック)が割り当て済みであるか否かを判定する。
コピー先ブロック全体がホストからのデータで満たされると、コントローラ4は、このコピー先ブロックをフラッシュブロックプール#0によって管理するとともに(クローズ)、共通フラッシュブロックプール801の内のフリーブロックをQoSドメイン#0用の新たなコピー先ブロック(オープンブロック)として割り当てる。
読み出すべきデータが格納されている記憶位置を示す物理アドレス(ブロックアドレス、オフセット)を指定するリードコマンドをホスト2から受信すると(ステップS11のYES)、コントローラ4は、この記憶位置のデータ(読み出し対象データ)の書き込み動作が既に終了しておりこのデータがNAND型フラッシュメモリ5から読み出し可能であるか否かを判定する(ステップS12)。
QoSドメインID、タグ、ライトバッファアドレスを指定するライトコマンドをホスト2から受信すると(ステップS21)、コントローラ4は、共通フラッシュブロックプール801内の一つのブロック(フリーブロック)を選択し、この選択したブロックを、ライトコマンドによって指定されたQoSドメインIDに対応するQoSドメイン用の書き込み先ブロックとして割り当てる。コントローラ4は、この書き込み先ブロックを、ライトコマンドに関連付けられたライトデータが書き込まれるべきブロックとして決定し、さらに、さらに、このライトデータが書き込まれるべき、この書き込み先ブロック内の書き込み先位置を決定する(ステップS22)。既にこのQoSドメイン用の書き込み先ブロックが割り当てられているならば、コントローラ4は、この既に割り当てられている書き込み先ブロックをライトデータが書き込まれるべきブロックとして決定すればよく、共通ブロック群602から一つのブロックをこのQoSドメイン用の書き込み先ブロックとして割り当てる動作を実行する必要は無い。
なお、本実施形態では、ライトデータの書き込み動作が終了してこのライトデータがNAND型フラッシュメモリ5から読み出し可能となる前に、このライトデータを読み出し対象データとして指定するリードコマンドがホスト2から受信された場合、コントローラ4は、ライトバッファからこの読み出し対象データを読み出した。しかし、別の実施形態では、ライトデータの書き込み動作が終了してこのライトデータがNAND型フラッシュメモリ5から読み出し可能となる前に、このライトデータを読み出し対象データとして指定するリードコマンドがホスト2から受信された場合、コントローラ4は、ライトバッファからこの読み出し対象データをリードコマンドに対する応答として返すように要求する転送要求をホスト2に送信してもよい。この転送要求は、読み出し対象データが格納されているライトバッファ内の位置を示す記憶位置情報を含んでいてもよい。
Claims (12)
- ホストに接続可能なメモリシステムであって、
複数のブロックを含む不揮発性メモリと、
前記不揮発性メモリに電気的に接続され、前記不揮発性メモリを制御するように構成されたコントローラとを具備し、
前記コントローラは、
ライトデータが格納されている前記ホストのライトバッファ内の記憶位置を示す記憶位置情報を指定するライトコマンドを前記ホストから受信し、
前記ライトデータが書き込まれるべき書き込み先ブロックと、前記ライトデータが書き込まれるべき、前記書き込み先ブロック内の書き込み先位置とを決定し、
前記ライトデータの識別子と、前記書き込み先ブロックのブロックアドレスと、前記書き込み先ブロック内の前記書き込み先位置を示すオフセットとを前記ホストに通知し、
前記記憶位置情報に基づいて前記ライトデータを前記ホストのライトバッファから取得し、前記ライトデータを前記書き込み先ブロック内の前記書き込み先位置に書き込み、
読み出すべき第1のデータが格納されている記憶位置を示す物理アドレスを指定するリードコマンドを前記ホストから受信し、
前記第1のデータの書き込み動作が既に終了しており前記第1のデータが前記不揮発性メモリから読み出し可能である場合、前記第1のデータを前記不揮発性メモリから読み出し、
前記第1のデータの書き込み動作が終了して前記第1のデータが読み出し可能となる前に、前記リードコマンドが受信された場合、前記ホストのライトバッファから前記第1のデータを読み出すように構成されている、メモリシステム。 - 前記コントローラは、前記ライトデータの書き込み動作が失敗した場合、前記書き込み先ブロックとは異なる別のブロック内の書き込み先位置に前記ライトデータを書き込み、前記ライトデータの識別子と、前記別のブロックのブロックアドレスと、前記別のブロック内の前記書き込み先位置を示すオフセットとを前記ホストにアドレス変更要求として通知するように構成されている請求項1記載のメモリシステム。
- 前記コントローラは、前記ライトデータの書き込み動作が失敗した場合、前記ライトデータを前記ライトバッファから再び取得するように構成されている請求項2記載のメモリシステム。
- 前記コントローラは、前記ライトデータの書き込み動作が終了して前記ライトデータが読み出し可能となった後、前記ライトデータが格納されている前記ライトバッファ内の領域を解放するための解放要求を前記ホストに送信するように構成されている請求項1記載のメモリシステム。
- ホストに接続可能なメモリシステムであって、
複数のブロックを含む不揮発性メモリと、
前記不揮発性メモリに電気的に接続され、前記不揮発性メモリを制御するように構成されたコントローラとを具備し、
前記コントローラは、
各々が前記複数のブロックの部分集合である複数の領域をアクセスするための複数の識別子ののうちの第1の識別子と、ライトデータの識別子と、前記ライトデータが格納されている前記ホストのライトバッファ内の記憶位置を示す記憶位置情報とを指定するライトコマンドを前記ホストから受信し、
前記複数の領域によって共有される共通フリーブロック群のうちの一つのブロックを前記第1の識別子に対応する領域用の書き込み先ブロックとして割り当て、前記ライトデータが書き込まれるべき、前記書き込み先ブロック内の書き込み先位置を決定し、
前記ライトデータの識別子と、前記書き込み先ブロックのブロックアドレスと、前記書き込み先ブロック内の前記書き込み先位置を示すオフセットとを前記ホストに通知し、
前記記憶位置情報に基づいて前記ライトデータを前記ホストのライトバッファから取得し、前記ライトデータを前記書き込み先ブロック内の前記書き込み先位置に書き込み、
読み出すべき第1のデータが格納されている記憶位置を示す物理アドレスを指定するリードコマンドを前記ホストから受信し、
前記第1のデータの書き込み動作が既に終了しており前記第1のデータが前記不揮発性メモリから読み出し可能である場合、前記第1のデータを前記不揮発性メモリから読み出し、
前記第1のデータの書き込み動作が終了して前記第1のデータが読み出し可能となる前に、前記リードコマンドが受信された場合、前記ホストのライトバッファから前記第1のデータを読み出すように構成されている、メモリシステム。 - 前記コントローラは、前記ライトデータの書き込み動作が失敗した場合、前記書き込み先ブロックとは異なる別のブロック内の書き込み先位置に前記ライトデータを書き込み、前記ライトデータの識別子と、前記別のブロックのブロックアドレスと、前記別のブロック内の前記書き込み先位置を示すオフセットとを前記ホストにアドレス変更要求として通知するように構成されている請求項5記載のメモリシステム。
- 前記コントローラは、前記ライトデータの書き込み動作が失敗した場合、前記ライトデータを前記ライトバッファから再び取得するように構成されている請求項6記載のメモリシステム。
- 前記コントローラは、前記ライトデータの書き込み動作が終了して前記ライトデータが読み出し可能となった後、前記ライトデータが格納されている前記ライトバッファ内の領域を解放するための解放要求を前記ホストに送信するように構成されている請求項5記載のメモリシステム。
- 複数のブロックを含む不揮発性メモリを制御する制御方法であって、
ライトデータが格納されているホストのライトバッファ内の記憶位置を示す記憶位置情報を指定するライトコマンドを前記ホストから受信することと、
前記ライトデータが書き込まれるべき書き込み先ブロックと、前記ライトデータが書き込まれるべき、前記書き込み先ブロック内の書き込み先位置とを決定することと、
前記ライトデータの識別子と、前記書き込み先ブロックのブロックアドレスと、前記書き込み先ブロック内の前記書き込み先位置を示すオフセットとを前記ホストに通知することと、
前記記憶位置情報に基づいて前記ライトデータを前記ホストのライトバッファから取得し、前記ライトデータを前記書き込み先ブロック内の前記書き込み先位置に書き込むことと、
読み出すべき第1のデータが格納されている記憶位置を示す物理アドレスを指定するリードコマンドを前記ホストから受信することと、
前記第1のデータの書き込み動作が既に終了しており前記第1のデータが前記不揮発性メモリから読み出し可能である場合、前記第1のデータを前記不揮発性メモリから読み出すことと、
前記第1のデータの書き込み動作が終了して前記第1のデータが読み出し可能となる前に、前記リードコマンドが受信された場合、前記ホストのライトバッファから前記第1のデータを読み出すこととを具備する制御方法。 - 前記ライトデータの書き込み動作が失敗した場合、前記書き込み先ブロックとは異なる別のブロック内の書き込み先位置に前記ライトデータを書き込むことと、
前記ライトデータの識別子と、前記別のブロックのブロックアドレスと、前記別のブロック内の前記書き込み先位置を示すオフセットとを前記ホストにアドレス変更要求として通知することとをさらに具備する請求項9記載の制御方法。 - 前記ライトデータの書き込み動作が失敗した場合、前記ライトデータを前記ライトバッファから再び取得することをさらに具備する請求項10記載の制御方法。
- 前記ライトデータの書き込み動作が終了して前記ライトデータが読み出し可能となった後、前記ライトデータが格納されている前記ライトバッファ内の領域を解放するための解放要求を前記ホストに送信することをさらに具備する請求項9記載の制御方法。
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019013220A JP7155028B2 (ja) | 2019-01-29 | 2019-01-29 | メモリシステムおよび制御方法 |
US16/564,412 US10929067B2 (en) | 2019-01-29 | 2019-09-09 | Nonvolatile memory system and method for controlling write and read operations in the nonvolatile memory by a host |
US17/144,641 US11461049B2 (en) | 2019-01-29 | 2021-01-08 | Method for controlling write and read operations in the nonvolatile memory by a host, using an identifier for a region |
US17/898,774 US11829648B2 (en) | 2019-01-29 | 2022-08-30 | Method for controlling write and read operations in the nonvolatile memory by a host, using an identifier for a region |
JP2022156211A JP7358594B2 (ja) | 2019-01-29 | 2022-09-29 | メモリシステム |
US18/484,542 US12112073B2 (en) | 2019-01-29 | 2023-10-11 | Method for controlling write and read operations in the nonvolatile memory by a host, using an identifier for a region |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019013220A JP7155028B2 (ja) | 2019-01-29 | 2019-01-29 | メモリシステムおよび制御方法 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022156211A Division JP7358594B2 (ja) | 2019-01-29 | 2022-09-29 | メモリシステム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2020123038A true JP2020123038A (ja) | 2020-08-13 |
JP7155028B2 JP7155028B2 (ja) | 2022-10-18 |
Family
ID=71733706
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019013220A Active JP7155028B2 (ja) | 2019-01-29 | 2019-01-29 | メモリシステムおよび制御方法 |
JP2022156211A Active JP7358594B2 (ja) | 2019-01-29 | 2022-09-29 | メモリシステム |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022156211A Active JP7358594B2 (ja) | 2019-01-29 | 2022-09-29 | メモリシステム |
Country Status (2)
Country | Link |
---|---|
US (4) | US10929067B2 (ja) |
JP (2) | JP7155028B2 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112114753A (zh) * | 2020-09-17 | 2020-12-22 | 杭州海康威视系统技术有限公司 | 一种数据写入方法、装置及设备 |
KR102351237B1 (ko) * | 2021-04-29 | 2022-01-13 | 삼성전자주식회사 | 메모리 저장 장치 및 통신 시스템 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7155028B2 (ja) | 2019-01-29 | 2022-10-18 | キオクシア株式会社 | メモリシステムおよび制御方法 |
KR20200125216A (ko) * | 2019-04-26 | 2020-11-04 | 에스케이하이닉스 주식회사 | 데이터 저장 장치, 이를 포함하는 전자 장치 및 데이터 저장 장치의 동작 방법 |
US11157193B2 (en) * | 2019-12-16 | 2021-10-26 | Micron Technology, Inc. | Coherency issue resolution in logical to physical page translation in a memory sub-system |
US11809745B2 (en) | 2021-05-13 | 2023-11-07 | Western Digital Technologies, Inc. | Multi-fetching data for multi-pass programming within storage devices |
US20230136664A1 (en) * | 2021-11-02 | 2023-05-04 | SK Hynix Inc. | Storage device and electronic device |
US20240129365A1 (en) * | 2022-10-13 | 2024-04-18 | Microsoft Technology Licensing, Llc | Implementing a target block command on an unstructured data storage node |
CN117420966B (zh) * | 2023-12-19 | 2024-05-28 | 深圳大普微电子股份有限公司 | 物理地址的编址方法及闪存设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008226040A (ja) * | 2007-03-14 | 2008-09-25 | 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 |
JP2017162068A (ja) * | 2016-03-08 | 2017-09-14 | 東芝メモリ株式会社 | ストレージシステム、情報処理システムおよび制御方法 |
JP2018120317A (ja) * | 2017-01-24 | 2018-08-02 | 富士通株式会社 | 情報処理装置,制御プログラムおよび情報処理方法 |
JP2019008730A (ja) * | 2017-06-28 | 2019-01-17 | 東芝メモリ株式会社 | メモリシステム |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6691205B2 (en) * | 2001-03-05 | 2004-02-10 | M-Systems Flash Disk Pioneers Ltd. | Method for using RAM buffers with simultaneous accesses in flash based storage systems |
JP4082913B2 (ja) * | 2002-02-07 | 2008-04-30 | 株式会社ルネサステクノロジ | メモリシステム |
CN103492491B (zh) | 2011-02-23 | 2015-09-09 | 住友电木株式会社 | 有机硅橡胶系固化性组合物、成型体以及医疗用管 |
JP5687639B2 (ja) * | 2012-02-08 | 2015-03-18 | 株式会社東芝 | コントローラ、データ記憶装置及びプログラム |
US9164888B2 (en) | 2012-12-10 | 2015-10-20 | Google Inc. | Using a logical to physical map for direct user space communication with a data storage device |
US9652376B2 (en) * | 2013-01-28 | 2017-05-16 | Radian Memory Systems, Inc. | Cooperative flash memory control |
US9092362B1 (en) | 2014-03-13 | 2015-07-28 | NXGN Data, Inc. | Programmable data write management system and method for operating the same in a solid state drive |
WO2016056104A1 (ja) * | 2014-10-09 | 2016-04-14 | 株式会社日立製作所 | ストレージ装置、及び、記憶制御方法 |
US20160266802A1 (en) | 2015-03-10 | 2016-09-15 | Kabushiki Kaisha Toshiba | Storage device, memory system and method of managing data |
US20170123991A1 (en) * | 2015-10-28 | 2017-05-04 | Sandisk Technologies Inc. | System and method for utilization of a data buffer in a storage device |
US10642496B2 (en) * | 2016-04-01 | 2020-05-05 | Sandisk Technologies Inc. | Out of order read transfer with host memory buffer |
JP2018160155A (ja) * | 2017-03-23 | 2018-10-11 | 東芝メモリ株式会社 | 記憶装置 |
KR102395190B1 (ko) * | 2017-07-31 | 2022-05-06 | 삼성전자주식회사 | 호스트와 인터페이스를 수행하는 스토리지 장치, 호스트 및 스토리지 장치의 동작방법 |
JP2019079464A (ja) * | 2017-10-27 | 2019-05-23 | 東芝メモリ株式会社 | メモリシステムおよび制御方法 |
JP6967959B2 (ja) * | 2017-12-08 | 2021-11-17 | キオクシア株式会社 | メモリシステムおよび制御方法 |
JP7048289B2 (ja) * | 2017-12-08 | 2022-04-05 | キオクシア株式会社 | 情報処理装置および方法 |
JP2019191909A (ja) * | 2018-04-25 | 2019-10-31 | 東芝メモリ株式会社 | メモリシステムおよび制御方法 |
JP7143232B2 (ja) * | 2019-01-29 | 2022-09-28 | キオクシア株式会社 | メモリシステムおよび制御方法 |
JP7155028B2 (ja) * | 2019-01-29 | 2022-10-18 | キオクシア株式会社 | メモリシステムおよび制御方法 |
-
2019
- 2019-01-29 JP JP2019013220A patent/JP7155028B2/ja active Active
- 2019-09-09 US US16/564,412 patent/US10929067B2/en active Active
-
2021
- 2021-01-08 US US17/144,641 patent/US11461049B2/en active Active
-
2022
- 2022-08-30 US US17/898,774 patent/US11829648B2/en active Active
- 2022-09-29 JP JP2022156211A patent/JP7358594B2/ja active Active
-
2023
- 2023-10-11 US US18/484,542 patent/US12112073B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008226040A (ja) * | 2007-03-14 | 2008-09-25 | 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 |
JP2017162068A (ja) * | 2016-03-08 | 2017-09-14 | 東芝メモリ株式会社 | ストレージシステム、情報処理システムおよび制御方法 |
JP2018120317A (ja) * | 2017-01-24 | 2018-08-02 | 富士通株式会社 | 情報処理装置,制御プログラムおよび情報処理方法 |
JP2019008730A (ja) * | 2017-06-28 | 2019-01-17 | 東芝メモリ株式会社 | メモリシステム |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112114753A (zh) * | 2020-09-17 | 2020-12-22 | 杭州海康威视系统技术有限公司 | 一种数据写入方法、装置及设备 |
KR102351237B1 (ko) * | 2021-04-29 | 2022-01-13 | 삼성전자주식회사 | 메모리 저장 장치 및 통신 시스템 |
Also Published As
Publication number | Publication date |
---|---|
US20210124531A1 (en) | 2021-04-29 |
US11829648B2 (en) | 2023-11-28 |
US10929067B2 (en) | 2021-02-23 |
US11461049B2 (en) | 2022-10-04 |
JP7155028B2 (ja) | 2022-10-18 |
US20220413770A1 (en) | 2022-12-29 |
US12112073B2 (en) | 2024-10-08 |
US20200241799A1 (en) | 2020-07-30 |
JP7358594B2 (ja) | 2023-10-10 |
JP2022173454A (ja) | 2022-11-18 |
US20240036769A1 (en) | 2024-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7159069B2 (ja) | メモリシステムおよび制御方法 | |
JP7358594B2 (ja) | メモリシステム | |
JP6785205B2 (ja) | メモリシステムおよび制御方法 | |
TWI674502B (zh) | 記憶體系統及控制方法 | |
JP2019185596A (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 | |
JP7392080B2 (ja) | メモリシステム | |
JP2021033849A (ja) | メモリシステムおよび制御方法 | |
JP2019133391A (ja) | メモリシステムおよび制御方法 | |
JP2021033848A (ja) | メモリシステムおよび制御方法 | |
JP2021081981A (ja) | メモリシステムおよび制御方法 | |
JP2021033847A (ja) | メモリシステムおよび制御方法 | |
JP2021033845A (ja) | メモリシステムおよび制御方法 | |
JP2019212103A (ja) | メモリシステム | |
JP2021007059A (ja) | メモリシステム | |
JP2023107418A (ja) | ストレージデバイスおよびストレージシステム | |
JP7167295B2 (ja) | メモリシステムおよび制御方法 | |
JP2022179798A (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: 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: 20220817 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20220823 |
|
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: 20220906 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20221005 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 7155028 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |