JP2018160189A - メモリシステム - Google Patents
メモリシステム Download PDFInfo
- Publication number
- JP2018160189A JP2018160189A JP2017058217A JP2017058217A JP2018160189A JP 2018160189 A JP2018160189 A JP 2018160189A JP 2017058217 A JP2017058217 A JP 2017058217A JP 2017058217 A JP2017058217 A JP 2017058217A JP 2018160189 A JP2018160189 A JP 2018160189A
- Authority
- JP
- Japan
- Prior art keywords
- stream
- data
- information
- block
- write
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
- G06F13/1694—Configuration of memory controller to different memory types
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/16—Multiple access memory array, e.g. addressing one storage element via at least two independent addressing line groups
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/1032—Reliability improvement, data loss prevention, degraded operation etc
- G06F2212/1036—Life time enhancement
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/7205—Cleaning, compaction, garbage collection, erase control
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)
- Microelectronics & Electronic Packaging (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
Abstract
【課題】利用効率の良いブロック割り当てを行い、不揮発性メモリの長寿命化を実現する。
【解決手段】第1ストリームIDに対応付けられたデータである第1データに関する情報である第2情報を収集し、収集された第2情報に基づいて、第1ストリームIDと、前記第1データがライトされるブロックである第1ブロックとの対応関係を無効にする。
【選択図】図1
【解決手段】第1ストリームIDに対応付けられたデータである第1データに関する情報である第2情報を収集し、収集された第2情報に基づいて、第1ストリームIDと、前記第1データがライトされるブロックである第1ブロックとの対応関係を無効にする。
【選択図】図1
Description
本実施形態は、不揮発性メモリを備えるメモリシステムに関する。
マルチストリーム制御では、ホストは、ライフタイムが同じデータに同一のストリームIDを割り当てる。前記ホストに外部メモリとして接続されるデバイスは、ストリームIDが同じデータを同じブロックに書き込み、ストリームIDが異なるデータを別のブロックに書き込む。
一つの実施形態は、利用効率の良いブロック割り当てを行い、不揮発性メモリの長寿命化を実現するメモリシステムを提供することを目的とする。
一つの実施形態によれば、メモリシステムは、複数のブロックを有する不揮発性メモリと、前記不揮発性メモリを制御するメモリコントローラとを備える。前記メモリコントローラは、情報記録部と、制御部とを備える。前記情報記録部は、第1ストリームIDと第1ブロックとの対応関係が記録される。前記第1ブロックは、第1データがライトされるブロックである。前記第1データは、前記第1ストリームIDに対応付けられたデータである。前記制御部は、前記第1データに関する情報である第1情報を収集し、収集された第1情報に基づいて、前記情報記録部における前記第1ストリームIDと前記第1ブロックとの前記対応関係を無効にする。
以下に添付図面を参照して、実施の形態にかかるメモリシステムを詳細に説明する。なお、これらの実施の形態により本発明が限定されるものではない。
(第1の実施形態)
図1は第1の実施形態のメモリシステム100の構成例を示すブロック図である。メモリシステム100は、ホスト装置(以下、ホストと略す)1と通信線5で接続され、ホスト1の外部記憶装置として機能する。ホスト1は、例えば、パーソナルコンピュータなどの情報処理装置、携帯電話、撮像装置であってもよいし、タブレットコンピュータやスマートフォンなどの携帯端末であってもよいし、ゲーム機器であってもよいし、カーナビゲーションシステムなどの車載端末であってもよい。
図1は第1の実施形態のメモリシステム100の構成例を示すブロック図である。メモリシステム100は、ホスト装置(以下、ホストと略す)1と通信線5で接続され、ホスト1の外部記憶装置として機能する。ホスト1は、例えば、パーソナルコンピュータなどの情報処理装置、携帯電話、撮像装置であってもよいし、タブレットコンピュータやスマートフォンなどの携帯端末であってもよいし、ゲーム機器であってもよいし、カーナビゲーションシステムなどの車載端末であってもよい。
ホスト1は、CPUとメモリを備える。CPUは、メモリにロードされる様々なプログラムを実行するように構成されたプロセッサである。様々なプログラムにはオペレーティングシステムやアプリケーションプログラムが含まれる。ホスト1のオペレーティングシステムは、ファイルの生成、保存、更新、削除等を管理する。アプリケーションプログラムは、オペレーティングシステムを介してメモリシステム100とデータのやり取りを行うように構成されている。
メモリシステム100は、不揮発性メモリとしてのNAND型フラッシュメモリ(以下、NANDと略す)10と、メモリコントローラ20とを備える。不揮発性メモリとしては、NAND型フラッシュメモリに限らず、3次元構造フラッシュメモリ、ReRAM(Resistance Random Access Memory)、FeRAM(Ferroelectric Random Access Memory)、クロスポイント型メモリ、相変化型メモリ(Phase Change Memory; PCM)、磁気抵抗メモリ(Magnetoresistive Random Access Memory; MRAM)などであってもよい。
NAND10は、複数のブロック#B1,#B2,…,#Bn を有する。ブロックは、データ消去の単位である。各ブロックは、複数のメモリセルを有する。各メモリセルは多値記憶が可能である。各ブロック#B1,#B2,…,#Bnは、複数のページを含む。データのリードおよびライトは、ページ単位で実行される。ページへのデータ書き込みは、1消去サイクル当たり1回のみ可能である。
NAND10には、ホスト1から送信されるユーザデータと、メモリシステム100の管理情報と、ファームウェアなどがストアされる。前記ファームウェアは、メモリコントローラ20の制御部30の機能の少なくとも一部を実現するCPU(図示せず)を動作させる。前記ファームウェアは、図示しないROMにストアされてもよい。前記管理情報は、論理物理変換情報(L2P情報)などを含む。
メモリコントローラ20は、ホストインタフェース(ホストIF)21と、メモリインタフェース(メモリIF)22と、制御部30と、RAM40と、これら構成要素を接続するバス6とを備える。本実施形態は、RAM40をメモリコントローラ20の内部に設けているが、RAM40をメモリコントローラ20の外部に設けてもよい。
ホストIF21は、ホスト1からライト要求およびリード要求を受信する。前記ライト要求は、ライトコマンド、ライトアドレス、ライトデータを含む。前記リード要求は、リードコマンド、リードアドレスを含む。ホストIF21は、受信されたライト要求またはリード要求を制御部30に転送する。また、ホストIF21は、NAND10から読み出されたユーザデータ、制御部30の応答などをホスト1へ送信する。
RAM40は、NAND10よりも高速アクセスが可能な揮発性の半導体メモリである。RAM40としては、SRAM(Static Random Access Memory)やDRAM(Dynamic Random Access Memory)が用いられる。NAND10にストアされている前記管理情報がRAM40にロードされる。RAM40は、前記管理情報として、L2P情報41と、ストリーム管理情報42と、ストリーム履歴情報43をストアする。前記L2P情報41、ストリーム管理情報42およびストリーム履歴情報43は、NAND10でバックアップされる。
制御部30は、メモリシステム100の各構成要素を統括的に制御する。制御部30は、データ管理部31、ライト制御部32、リード制御部33を有する。制御部30は、RAM40にロードされたファームウェアを実行する1または複数のCPU(プロセッサ)および周辺回路によってその機能が実現される。データ管理部31は、ファームウェアを実行するCPUおよび/またはハードウェアによってその機能が実現される。ライト制御部32は、ファームウェアを実行するCPUおよび/またはハードウェアによってその機能が実現される。リード制御部33は、ファームウェアを実行するCPUおよび/またはハードウェアによってその機能が実現される。
データ管理部31は、RAM40にロードされる前記管理情報の一つであるL2P情報41を使ってユーザデータを管理する。前記L2P情報41は、ホスト1で使用される論理アドレスと、NAND10の物理アドレスとを対応付けるマッピングが登録されている。論理アドレスとしては、例えばLBA(Logical Block Addressing)が用いられる。物理アドレスは、データが記憶されているNAND10上の記憶位置を示している。ホスト1からライト要求を受信した場合、データ管理部31は、L2P情報41を使って論理アドレスとしてのライトアドレスを物理アドレスへ変換し、ライトデータを書き込むNAND10上の実アドレスを決定する。ホスト1からリード要求を受信した場合、データ管理部31は、論理アドレスとしてのリードアドレスを物理アドレスへ変換し、データをリードするNAND10上の実アドレスを決定する。
データ管理部31は、前記管理情報の一つであるブロック管理情報(図示せず)を使用してNAND10に含まれるブロックの管理を実行する。ブロック管理情報では、例えば以下のブロック管理情報を管理する。
・ブロック単位の消去回数(erase count)
・ブロックがアクティブブロックかフリーブロックかを区別する情報
・バッドブロックのブロックアドレス
・ブロック単位の消去回数(erase count)
・ブロックがアクティブブロックかフリーブロックかを区別する情報
・バッドブロックのブロックアドレス
アクティブブロックは、有効(valid)データが記録されている。フリーブロックは、有効データが記録されていない。フリーブロックは、データを消去した後、消去済みブロックとして再利用可能である。有効データとは論理アドレスと対応付けられているデータであり、無効データとは論理アドレスが対応付けられていないデータである。消去済みブロックは、データが書き込まれると、アクティブブロックとなる。バッドブロックは、様々な要因で正常に動作せず、使用不可となっている。
データ管理部31は、コンパクション(ガベージコレクション)を実行する。メモリシステム100において、データの消去単位(ブロック)と、データの読み書き単位が異なる場合、NAND10の書き換えが進むと、無効なデータによって、ブロックは断片化(fragmented)される。このような断片化されたブロックが増えると、使用可能なブロックが少なくなる。そこで、例えば、NAND10のフリーブロックが所定の閾値より少なくなった場合、コンパクションを実行し、フリーブロックを増加させる。コンパクションでは、有効なデータおよび無効なデータが含まれているブロックから前記有効データが集められて、別のブロックに書き直される。
データ管理部31は、データ無効化処理を実行する。ホスト1からデータ無効化要求を受信すると、データ管理部31は、データ無効化処理を実行する。データ無効化要求は、データ無効化コマンドおよび無効化する論理アドレスを含む。データ無効化要求は、例えば、SCSI(Small Computer System Interface)規格におけるUNMAPコマンド、ATA(Advanced Technology Attachment)規格におけるTRIMコマンドに対応する。データ管理部31は、ホスト1からデータ無効化要求を受信すると、L2P情報41にアクセスし、データ無効化コマンドで指定された論理アドレスと物理アドレスとの対応付けを無効化する。
ライト制御部32は、ホスト1から受信したライト要求に従い、NAND10にデータを書き込むための処理を実行する。ライト制御部32は、ホスト1からライト要求を受信した場合、ライトデータを書込むべきNAND10上の物理アドレスをデータ管理部31から取得し、取得された物理アドレスとライトデータをメモリIF22に出力する。
リード制御部33は、ホスト1から受信したリード要求に従い、NAND10からデータを読み出すための制御を行う。リード制御部33は、リードデータの論理アドレスに対応するNAND10上の物理アドレスをデータ管理部31から取得し、取得された物理アドレスをメモリIF22に出力する。
メモリIF22は、ライト制御部32から入力されたライトデータおよび物理アドレスをNAND10に出力することによって、NAND10へライトデータを書き込む。メモリIF22は、リード制御部33から入力された物理アドレスをNAND10に出力することによって、NAND10からライトデータをリードする。メモリIF22は、ECC(Error Correcting Code; ECC)回路を備えてもよい。ECC回路は、ライト制御部32から転送されたデータに対して、誤り訂正の符号化処理を実施しパリティを生成する。ECC回路は、データおよびパリティを含む符号語をNAND10へ出力する。ECC回路は、NAND10からリードされた符号語を用いて誤り訂正の復号化処理を実行し、復号されたデータをリード制御部33に転送する。
ホスト1のオペレーティングシステムはマルチストリームのライト動作をサポートしている。マルチストリームにおいては、ホスト1は、同じファイルに含まれるデータのような、同じライフタイムを持つデータを同じストリームIDを持つストリームに対応付ける。オペレーティングシステムがアプリケーションプログラムからストリームIDが指定されたストリームライト要求を受信した時、オペレーティングシステムは、ストリームライト要求によって指定されるストリームIDを含むライト要求を生成し、メモリシステム100へ送信する。あるいは、アプリケーションプログラムがストリームIDを指定した要求の発行をオペレーティングシステムへ要求するのでは無く、ホスト1のオペレーティングシステム自体が、所定のルール(ポリシー)に基づいて、ストリームIDを指定する処理を行っても良い。
前記コンパクションの実行頻度を少なくするために、本メモリシステム100は、通常のライト動作に加え、マルチストリームのライト動作をサポートしている。通常ライト動作では、所定のブロック選択ルールに従って、ライトデータの書き込み先をストリームライト用に割り当てられていない任意のブロックから選択し、選択されたブロックにライトデータをライトする。メモリシステム100は、第1のストリームIDに対応付けられたデータを、第1のストリームIDに対応付けた1または複数のブロックにライトする。また、第2のストリームIDに対応付けられたデータを、第2のストリームIDに対応付けた1または複数のブロックにライトする。ホスト1がデータを削除する際、同じストリームIDに対応付けられた全データが一斉に無効化する可能性が高いため、マルチストリームのライト動作をサポートすることで、メモリシステム100は、コンパクションの実行回数を減らすことができ、性能劣化や寿命短縮を改善できる。
図2は、マルチストリームによるライト動作を概念的に示す図である。ストリームID1を伴うデータ(LBA1によって指定されるデータ、LBA2によって指定されるデータ、LBA3によって指定されるデータ、LBA4によって指定されるデータ、LBA5によって指定されるデータ)は、ID1のストリーム用に割り当てられた消去済みのブロック#B1にライトされる。ストリームID2を伴うデータ(LBA102によって指定されるデータ、LBA103によって指定されるデータ、LBA200によって指定されるデータ、LBA104によって指定されるデータ、LBA201によって指定されるデータ)は、ID2のストリーム用に割り当てられた消去済みのブロック#B2にライトされる。
ホスト1がストリームIDを割り当てるポリシーは、各々のアプリケーションが任意に決めている。このため、ストリームIDの割り当てが適切でない、あるいはデータサイズが小さい、マルチストリームのライト要求が発生する可能性がある。この場合、NAND10のブロックの利用効率が低下し、WAF(Write Amplification Factor)が増加し、NAND10の寿命低下、性能低下の原因となる。
図3は、ライフタイムが異なるデータに対し同じストリームIDが指定されている状態を示している。H1,H2,H3,H4,H5は、更新が頻繁に発生するホットデータを示している。W1,W2は、更新頻度が低いウォームデータを示している。C1,C2,C3,C4,C5は、更新が殆ど無いコールドデータを示している。ID=1のストリームには、W1,H1,C1,C2,C3,H2が対応付けられており、これらのデータが同一のブロック#B4にストアされている。ID=2のストリームには、C4,C5,W2,H3,H4,H5が対応付けられており、これらのデータが同一のブロック#B5にストアされている。この場合は、各ストリームIDの合計データサイズとブロックサイズが一致している。図3の場合は、書き込みが進むに従ってホットデータH1,H2,H3,H4,H5およびウォームデータW1,W2が無効なデータとなる可能性が高く、ブロックの断片化が進行し、結果的にコンパクションが発生する。
図4は、データサイズがSGS(Stream Granularity Size)に対して小さい状態を示している。マルチストリームでは、メモリシステム100は、ホスト1に対し、SGSを通知している。メモリシステム100側は、1つのストリームIDの合計データサイズがSGSの整数倍となることを希望している。SGSは、例えば、1または複数のブロックサイズに設定される。ID=1のストリームには、W1,W2,W3,W4が対応付けられており、これらのデータが同一のブロック#B6にストアされている。ID=2のストリームには、H1が対応付けられており、このデータが同一のブロック#B7にストアされている。ID=3のストリームには、C1,C2,C3が対応付けられており、これらのデータが同一のブロック#B8にストアされている。この場合は、ブロックサイズが、SGSに一致しているとする。このケースでは、ホスト1から送付されるライトデータのデータサイズが、SGSに対して小さ過ぎるため、ブロックに破線で示す無駄な空き領域が発生している。
そこで、本実施形態では、メモリシステム100は、ストリームIDの割り当てが適切に管理されたWriteアクセスか否を判断するためのストリーム履歴情報43をストリームID毎に収集する。適切に管理されていないと判断されたストリームIDに関しては、マルチストリームではない通常のライト要求のデータ管理に制御を移行する。すなわち、適切に管理されていないと判断されたストリームIDに関しては、ストリームIDとブロックIDとの対応付けを無効化し、この後通常のライト処理で行われるのと同様のブロック管理を実行する。したがって、本実施形態では、NAND10のブロックの利用効率が向上し、メモリシステム100の長寿命化を実現する。
図5は、データ管理部31によって管理されるストリーム管理情報42のデータ構造を示す図である。ストリーム管理情報42には、ストリームIDと、同じストリームIDが付加されたデータがライトされる1または複数のブロックIDとの対応関係を示すストリーム管理情報が格納される。図5では、ID1のストリームに対応付けられたデータのライトのためにブロック#B5,#B6が使用され、ID2のストリームに対応付けられたデータのライトのためにブロック#B7が使用された例が示されている。
図6は、データ管理部31によって管理されるストリーム履歴情報43のデータ構造を示す図である。図6では、ストリームID毎にストリーム履歴情報43が管理されている。この実施形態では、ストリーム履歴情報43として、以下の4つの情報をストリームID毎に収集する。
(a)データサイズ
(b)無効化されたクラスタ数の総計
(c)コンパクションの実行回数
(d)ストリームライトコマンド内で設定されるアクセス頻度情報(Access Frequency)
(a)データサイズ
(b)無効化されたクラスタ数の総計
(c)コンパクションの実行回数
(d)ストリームライトコマンド内で設定されるアクセス頻度情報(Access Frequency)
上記4つの情報の詳細を説明する前に、オープンストリームコマンドおよびクローズストリームコマンドについて説明する。オープンストリームコマンドはストリームのオープンを要求するコマンドである。データ管理部31は、オープンストリームコマンドをホスト1から受信すると、現在オープンされているストリームIDと異なる新たなストリームIDを、新たにオープンされたストリームのために割り当てる。データ管理部31は、新たにオープンされたストリームのためにデータをライトするブロックを割り当てる。そして、データ管理部31は、この新たにオープンされたストリームIDを含む応答をホスト1に送信する。ホスト1は、受信されたストリームIDを使ってストリームライト要求を実行する。
クローズストリームコマンドは、オープンされているストリームのクローズを要求するコマンドである。クローズストリームコマンドは、クローズされるストリームのストリームIDを示すパラメータを含む。データ管理部31は、クローズストリームコマンドをホスト1から受信すると、クローズストリームコマンドによって指定されたストリームIDとこのストリームIDに対応するブロックとの対応付けを、ストリーム管理情報42において無効化する。そして、データ管理部31は、コマンド完了通知を含む応答をホスト1に送信する。
まず、図6のデータサイズ43aに関して説明する。ストリームライトコマンドには、コマンドが指定するライトデータのサイズを示すNumber of Logical Blocks(NLB)が含まれている。同じストリームIDが付加された複数のライトコマンドに含まれるNLBを順次加算することによって、ライトデータの合計サイズをストリームID毎に計算する。ストリームライトコマンドが受信される度に、ストリームID毎のデータサイズが加算更新される。例えば、マルチストリーム対応のブロックへのリード発生時に、ライトデータの合計サイズが取得され、この合計サイズがSGSに対応する閾値と比較される。SGSは、ストリームID別の基本データ管理サイズである。メモリシステム100では、SGSとして、例えば1又は複数のブロックサイズを設定する。図6の物理リソースサイズ情報43bは、各ストリームIDのために確保される1または複数のブロックの合計サイズを示している。物理リソースサイズ情報43bは、1または複数のSGSに対応する。各ストリームのデータサイズ43aとSGSとの差ΔSを求め、この差ΔSが所定の閾値より大きいストリームについては、適切なデータ割り当てが行われていないと判断し、マルチストリーム管理を解消し、これ以降、通常のデータ管理を実行する。すなわち、ストリーム管理情報42のストリームIDとブロックIDとの対応付けを無効化し、この後、通常のライト処理で行われるのと同様のブロック管理を実行する。このような制御によって、図4に示したように、データサイズがSGSに対して小さ過ぎる場合は、適切なデータ割り当てが行われていないと判断される。
つぎに、ブロック内の無効化クラスタ数43cに関して説明する。クラスタとは、NAND10の論理空間と物理空間とのアドレッシング単位である。例えば、L2P情報41は、クラスタ単位にアドレッシングがマッピングされている。クラスタは、例えば、NAND10のページを複数に分割した管理単位である。ホスト1からのデータ無効化要求により、あるいはデータの更新(同じLBAに対するデータの書き込み)によりクラスタの無効化が発生すると、無効化されたクラスタ数がストリームID毎に計数される。この無効化されたクラスタ数に対応するサイズの物理リソースサイズ情報43bに対する割合が所定の閾値を越えたストリームに関しては、適切なデータ割り当てが行われていないと判断し、これ以降、通常のデータ管理を実行する。
つぎに、コンパクション実行回数43dに関して説明する。コンパクション対象のブロックに、マルチストリーム管理されるブロック(以下、ストリーム管理ブロックという)が含まれる場合、コンパクション回数をストリームID毎に計算する。例えば、ストリームID1で管理されるブロックA内のデータがコンパクションによってブロックBに移動されたとすると、ストリームID1のコンパクション回数を1回とする。つぎに、ブロックB内のデータがコンパクションによってブロックにさらに移動されたとすると、ストリームID1のコンパクション回数を2回とする。コンパクション回数が所定の閾値を越えたストリームに関しては、適切なデータ割り当てが行われていないと判断し、これ以降、通常のデータ管理を実行する。
つぎに、アクセス頻度情報(AF値)43eについて説明する。ホスト1が送信する各ストリームライトコマンドは、このライトコマンドによって指定されるLBAの属性を示すDataset Managementを含み、Dataset ManagementはAF情報を含んでいる。AF情報は、ライトコマンドによって指定されるLBAのアクセス頻度を示している。例えば、4ビットのAF値が0001である場合、アクセス頻度が普通であることを表している。AF値が0010の場合、リードおよびライト共にアクセスが少ないことを表している。AF値が0011の場合、ライトはアクセスが少なく、リードアクセスが頻繁であることを表している。AF値が0101の場合、リードおよびライト共にアクセスが頻繁であることを表している。AF値が0110の場合、1度だけライトがあることを表している。このように、AF値は、ライフタイムと同様の概念を表している。同じストリームIDを持つライトコマンド間でAF値が異なる場合は、適切なデータ割り当てが行われていないと判断する。前回のストリームライトコマンドのAF値と今回のストリームライトコマンドのAF値が異なる場合、図6のAF判定フラグ43fが1にセットされる。
図6のクローズフラグ(クローズFG)43gは、当該ストリームIDがクローズされているか否を示している。クローズフラグが1のとき、当該ストリームIDがクローズされており、クローズフラグが0のとき、当該ストリームIDがオープンされている。
図7は、ライト要求を受信したときのデータ管理部31の動作手順を示すフローチャートである。データ管理部31は、ホスト1からのライト要求をホストIF21を介して受信すると(S100)、このライト要求がストリームライトコマンドであるか通常のライトコマンドであるかを判定する(S110)。ライト要求がストリームライトコマンドでなく通常のライトコマンドである場合(S110 No)、データ管理部31は通常のライト処理を実行する(S120)。通常ライト動作では、前述したように、所定のブロック選択ルールに従って、ライトデータの書き込み先をストリームライト用に割り当てられていない任意のブロックから選択し、選択されたブロックにライトデータをライトする。このライト処理に伴い、データ管理部31はL2P情報41を更新する。
ライト要求がストリームライトコマンドである場合(S110 Yes)、データ管理部31は、ストリーム管理情報42に基づき、ライトコマンドに付加されたストリームIDが新規のIDか否かを判定する(S130,S140)。新規のIDである場合(S140 Yes)、データ管理部31は、ストリーム管理情報42に新規のストリームIDを登録する(S150)。さらに、データ管理部31は、この新規のストリームIDのデータをライトするブロックを決定し、決定されたブロックのブロックIDをストリーム管理情報42に登録する。さらに、データ管理部31は、決定されたブロックIDを含む書き込みアドレスを決定し、決定された書き込みアドレスおよびストリームライトコマンドによって指定されたデータを、RAM40およびメモリIF22を介してNAND10に入力する。これにより、ストリームライトコマンドによって指定されたデータがNAND10にライトされる。このライト処理に伴い、データ管理部31はL2P情報41を更新する。
一方、データ管理部31は、このライト処理に伴い、ストリーム履歴情報43に所要の情報を登録する(S160)。具体的には、データ管理部31は、ストリーム履歴情報43に、新規ストリームIDに対応するエントリを作成する。データ管理部31は、ストリームライトコマンドに含まれるNLBを取得し、取得されたNLBを新規エントリのデータサイズ43aの欄に記録する。また、データ管理部31は、新規ストリームIDのために確保した1又は複数のブロックのサイズを物理リソースサイズ情報43bの欄に登録する。さらに、データ管理部31は、ストリームライトコマンドに含まれるAF値を取得し、取得されたAF値を新規エントリのAF値43eの欄に記録する。
ステップS140の判定において、ストリームライトコマンドに付加されたストリームIDが新規のIDでない場合(S140 No)、データ管理部31は、このストリームIDがオープン中のIDであるかあるいはクローズされているIDであるかをストリーム履歴情報43のクローズフラグ43gに基づいて判定する(S170)。ストリームライトコマンドで指定されたストリームIDがクローズされているIDである場合(S170 Yes)、データ管理部31は、クローズされたストリームIDに対し、新たなストリームライト要求が発生したと判断し、クローズされたストリームIDのクローズフラグを1から0に変更することで、クローズされたストリームIDを再オープンする。また、データ管理部31は、ストリーム管理情報42に再オープンしたストリームIDを登録する。さらに、データ管理部31は、この再オープンしたストリームIDのデータをライトするブロックを決定し、決定されたブロックのブロックIDをストリーム管理情報42に登録する。さらに、データ管理部31は、決定されたブロックIDを含む書き込みアドレスを決定し、決定された書き込みアドレスおよびストリームライトコマンドによって指定されたデータをメモリIF22を介してNAND10に入力する。これにより、ストリームライトコマンドによって指定されたデータがNAND10にライトされる。このライト処理に伴い、データ管理部31はL2P情報41を更新する。
さらに、データ管理部31は、再オープンしたストリームIDのエントリに記録されていた情報をクリアし、今回のストリームライトコマンドに対応する所要の情報を記録する(S210)。具体的には、データ管理部31は、ストリームライトコマンドに含まれるNLBを取得し、取得されたNLBをデータサイズ43aの欄に記録する。また、データ管理部31は、再オープンしたストリームIDのために確保した1又は複数のブロックのサイズを物理リソースサイズ情報43bの欄に登録する。さらに、データ管理部31は、ストリームライトコマンドに含まれるAF値を取得し、取得されたAF値をAF値43eの欄に記録する。なお、再オープンしたストリームIDのエントリに記録されていた情報をクリアせずに、履歴として残しておくようにしてもよい。
ステップS170の判定において、ストリームライトコマンドに付加されたストリームIDがオープン中のストリームIDであると判定された場合(S170 No)、データ管理部31は、このストリームIDのデータをライトするブロックのブロックIDをストリーム管理情報42から取得する。データ管理部31は、取得されたブロックIDを含む書き込みアドレスを決定し、決定された書き込みアドレスおよびストリームライトコマンドによって指定されたデータをメモリIF22を介してNAND10に入力する。これにより、ストリームライトコマンドによって指定されたデータがNAND10にライトされる。このライト処理に伴い、データ管理部31はL2P情報41を更新する。
一方、データ管理部31は、このライト処理に伴い、ストリーム履歴情報43の所要の情報を更新する(S180)。具体的には、データ管理部31は、ストリームライトコマンドに含まれるNLBを取得し、取得されたNLBを、ストリームライトコマンドに付加されたストリームIDのデータサイズ43aの欄に記録されているデータサイズに加算し、この加算結果でデータサイズを更新する。また、今回のライト処理によって、当該ストリームストリームIDのデータを書き込むブロックを増加する必要がある場合、データ管理部31は、データをライトする新たなブロックを決定し、決定されたブロックのブロックIDをストリーム管理情報42に追加登録する。さらに、この追加登録に対応して、ストリーム履歴情報43の物理リソースサイズ情報43bを更新する。
さらに、データ管理部31は、今回のストリームライトコマンドによって、データの更新が発生する場合、すなわち、データが書き込まれているLBAと同じLBAに対するデータの書き込みが発生する場合、このデータ更新によって無効化されたクラスタ数を計数し、計数された無効化クラスタ数を無効化クラスタ数43cの欄に記録する。さらに、データ管理部31は、ストリームライトコマンドに含まれるAF値を取得し、取得されたAF値と、ストリーム履歴情報43に記録されているAF値とを比較する。この比較が一致の場合、AF判定フラグ43fを0にし、不一致の場合、AF判定フラグ43fを1にする。AF判定フラグ43fが1の場合(S190 Yes)、データ管理部31は、このストリームIDは適切なデータ割り当てが行われていないと判断し、このストリームIDに関しては、通常のライト要求のデータ管理に制御を移行する(S200)。すなわち、適切なデータ割り当てが行われていないと判断されたストリームIDに関しては、ストリーム管理情報42のストリームIDとブロックIDとの対応付けを無効化し、この後通常のライト処理で行われるのと同様のブロック管理を実行する。AF判定フラグ43fが0の場合(S190 No)、データ管理部31は、手順を終了する。
図8は、ストリーム履歴情報43で管理されるデータサイズ43aに基づき、各ストリームのデータ割り当てを判定するための処理手順を示すフローチャートである。データ管理部31は、リード要求が発生した場合、L2P情報41およびストリーム管理情報42に基づいてこのリード要求はストリーム管理されるブロックへの要求か否かを判定する(S300)。データ管理部31は、リード要求によって指定された論理アドレスに対応付けられた物理アドレスをL2P情報41から取得し、取得された物理アドレスを含むブロックIDがストリーム管理情報42に登録されているか否かを判定する。データ管理部31は、ストリーム管理情報42にブロックIDが登録されている場合、ストリーム管理されるブロックであると判定する。ステップS300の判定がYesである場合、データ管理部31は、リード要求が発生したブロックのストリームIDをストリーム管理情報42から取得し、取得されたストリームIDのエントリに記録されているデータサイズ43aをストリーム履歴情報43から取得する。データ管理部31は、取得されたデータサイズとSGSとの差ΔSを求める(S310)。データ管理部31は、差ΔSを閾値と比較し(S320)、前記差ΔSが閾値より大きい場合は(S320 Yes)、このストリームIDは適切なデータ割り当てが行われていないと判断し、このストリームIDに関しては、通常のライト要求のデータ管理に制御を移行する(S330)。すなわち、適切なデータ割り当てが行われていないと判断されたストリームIDに関しては、ストリーム管理情報42のストリームIDとブロックIDとの対応付けを無効化し、この後通常のライト処理で行われるのと同様のブロック管理を実行する。前記差ΔSが閾値より小さいストリームに関しては(S320 No)、ストリーム管理が続行される。このような制御によって、図4に示した、無駄な空き領域の発生を解消することが可能となる。
図9は、コンパクションが実行されるときのデータ管理部31の動作手順を示すフローチャートである。データ管理部31は、コンパクションを実行する(S400)。コンパクションの実行後、データ管理部31は、今回のコンパクションの対象ブロックにストリーム管理ブロックが含まれているか否かを判断し、ストリーム管理ブロックが含まれている場合、コンパクション対象のブロックのストリームIDをストリーム管理情報42から取得する。データ管理部31は、取得したストリームIDのコンパクション回数を計数し、計数されたコンパクション回数を、このストリームIDのコンパクション回数43dの欄に記録されているコンパクション回数に加算し、この加算結果でコンパクション回数を更新する(S410)。
つぎに、データ管理部31は、更新されたコンパクション回数を所定の閾値と比較する(S420)。コンパクション回数が閾値を越えた場合(S420 Yes)、データ管理部31は、このストリームIDは適切なデータ割り当てが行われていないと判断し、このストリームIDに関しては、通常のライト要求のデータ管理に制御を移行する(S440)。コンパクション回数が閾値を越えない場合は(S420 No)、ストリーム管理が続行される。
さらに、データ管理部31は、今回のコンパクション対象のブロックのストリームIDの無効化クラスタ数43cおよび物理リソースサイズ情報43bを取得する。データ管理部31は、無効化されたクラスタ数に基づき無効化されたクラスタサイズを計算し、計算された無効化クラスタサイズの物理リソースサイズ情報43bに対する割合を計算し、この割合値を所定の閾値と比較する(S430)。前記割合値が閾値を越えた場合(S430 Yes)、データ管理部31は、このストリームIDは適切なデータ割り当てが行われていないと判断し、このストリームIDに関しては、通常のライト要求のデータ管理に制御を移行する(S440)。前記割合値が前記閾値を越えない場合は(S430 No)、ストリーム管理が続行される。
図10は、UNMAPなどのデータ無効化処理が実行されるときのデータ管理部31の動作手順を示すフローチャートである。データ管理部31は、ホスト1からのデータ無効化要求を受信すると、データ無効化処理を実行する(S500)。このデータ無効化処理によって、データ無効化コマンドで指定された論理アドレスと物理アドレスとの対応付けがL2P情報41において無効化される。データ管理部31は、L2P情報41およびストリーム管理情報42に基づいて、データ無効化対象のデータがストリーム管理されているか否かを判定する。データ無効化対象のデータがストリーム管理されている場合、データ管理部31は、データ無効化対象のデータがストアされているブロックのストリームIDをストリーム管理情報42から取得し、さらに、ステップS500でのデータ無効化処理によって無効化されたクラスタ数をストリームID毎に計数する。
データ管理部31は、前記計数された各ストリームIDの無効化クラスタ数を、各ストリームIDの無効化クラスタ数43cの欄に記録されている無効化クラスタ数に加算し、加算結果によって各ストリームIDの無効化クラスタ数を更新する(S510)。この更新後、データ管理部31は、ストリーム履歴情報43に登録されている全てのストリームIDについての無効化クラスタ数および物理リソースサイズ情報43bを取得する。データ管理部31は、無効化クラスタ数に基づき無効化されたクラスタサイズをストリームID毎に計算する。データ管理部31は、物理リソースサイズに対する無効化クラスタサイズの割合をストリームID毎に計算し、計算された割合値を所定の閾値と比較する(S520)。データ管理部31は、前記割合値が前記閾値を越えたストリームに関しては(S520 Yes)、適切なデータ割り当てが行われていないと判断し、このストリームIDに関しては、通常のライト要求のデータ管理に制御を移行する(S530)。前記割合値が前記閾値を越えない場合は(S520 No)、ストリーム管理が続行される。
このように第1の実施形態では、データ割り当てが適切に管理されたWriteアクセスか否を判断するためのストリーム履歴情報43をストリームID毎に収集し、適切に管理されていないと判断されたストリームIDに関しては、通常のライト要求のデータ管理に制御を移行する。したがって、本実施形態では、NAND10のブロックの利用効率が向上し、メモリシステムの長寿命化を実現する。
なお、上記では、ストリーム管理ブロックにストアされたデータのリード要求が発生したときに、対応するストリームIDのデータサイズが適正であるか否かを判定したが、他の任意のタイミングでデータサイズが適正であるか否かを判定してもよい。例えば、ホスト1からの要求に応答して各ストリームIDのデータサイズが適正であるか否かを判定してもよい。また、上記では、コンパクション実行時、またはデータ無効化命令の実行時に、無効化クラスタ数が適正であるか否かを判定したが、データの無効化が発生する度に、無効化クラスタ数が適正であるか否かを判定してもよい。また、上記では、ストリームライトコマンドを受信する度に、AF値が一致するか否を判定し、前回のライトコマンドのAF値との不一致が一回でも発生した場合、AF値の設定が適正でないと判定したが、X個のライトコマンド中でY個以上のAF値の不一致が発生した場合に、AF値の設定が適正でないと判定してもよい。Xは3以上であり、Y≦Xである。また、ホスト1からの要求に応じて、無効化クラスタ数、コンパクション回数、あるいはAF値が適正であるか否かを判定しても良い。
なお、NAND10のユーザデータエリアの記憶容量が所定の閾値を下回った場合、データ割り当てが適正と判断されるストリームIDに関しても、マルチストリーム管理を中止し、通常のデータ管理に切り換えるようにしてもよい。ユーザデータエリアは、NAND10の全記憶エリアのうちで、ホスト1から受信したライトデータが書き込まれるエリアである。また、AF値が0100,あるいは0100は、ライトが頻繁に発生するデータを意味している。このため、NAND10の容量に余裕がなくなってNAND10の記憶容量が所定の閾値を下回った場合で、AF値が0100,あるいは0100であるストリームライトコマンドを受信したときは、マルチストリーム管理を中止し、通常のデータ管理に切り換えるようにしてもよい。
(第2の実施形態)
第2の実施形態では、メモリシステム100は、収集したストリーム履歴情報43をホスト1に提供する。第2の実施形態のメモリシステム100の構成は、図1に示したメモリシステム100と同様であり、重複する説明は省略する。図11は、データ管理部31がストリーム履歴情報43をホスト1に提供する動作手順を示すフローチャートである。ホスト1は、適宜のタイミングでメモリシステム100にストリーム履歴の送信を要求する(S600)。この要求を受信すると(S600 Yes)、データ管理部31は、ストリーム履歴情報43に管理される情報のうちクローズFG43gを除く情報(データサイズ43a、物理リソースサイズ情報43b、無効化クラスタ数43c、コンパクション回数43d、AF値43e、およびAF判定フラグ43f)をストリームID毎に収集し、収集されたストリーム履歴情報43をホスト1へ送信する(S610)。
第2の実施形態では、メモリシステム100は、収集したストリーム履歴情報43をホスト1に提供する。第2の実施形態のメモリシステム100の構成は、図1に示したメモリシステム100と同様であり、重複する説明は省略する。図11は、データ管理部31がストリーム履歴情報43をホスト1に提供する動作手順を示すフローチャートである。ホスト1は、適宜のタイミングでメモリシステム100にストリーム履歴の送信を要求する(S600)。この要求を受信すると(S600 Yes)、データ管理部31は、ストリーム履歴情報43に管理される情報のうちクローズFG43gを除く情報(データサイズ43a、物理リソースサイズ情報43b、無効化クラスタ数43c、コンパクション回数43d、AF値43e、およびAF判定フラグ43f)をストリームID毎に収集し、収集されたストリーム履歴情報43をホスト1へ送信する(S610)。
ホスト1は、メモリシステム100からストリームID毎のストリーム履歴情報43を受信すると、例えば、適正なデータ割り当てが行われていないストリームIDを特定し、特定されたストリームIDに対応するアプリケーションを特定し、特定したアプリケーションのマルチストリーム管理を修正する。例えば、ホスト1は、特定されたアプリケーションに対してストリームIDの割り当てを行わないようにする。
このように第2の実施形態では、ストリーム履歴をホスト1へ送信するので、ホスト1は、適正なデータ割り当てが行われていないストリームIDを発行したアプリケーションを特定することができる。したがって、ホスト1では、非効率なストリームアクセスを抑制することができ、メモリシステム100のメモリ使用効率を向上させ、メモリの長寿命化が可能になる。
なお、ホスト1からの要求をトリガにするのではなく、メモリシステム100が自主的にホスト1にストリーム履歴情報43を送信するようにしてもよい。また、ストリームIDを指定した要求をホスト1からメモリシステム100へ送信し、指定されたストリームIDに対するストリーム履歴情報43をメモリシステム100が送信するようにしてもよい。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 ホスト装置、10 NAND型フラッシュメモリ(NAND)、20 メモリコントローラ、21 ホストIF、22 メモリIF、30 制御部、31 データ管理部、32 ライト制御部、33 リード制御部、40 RAM、41 L2P情報、42 ストリーム管理情報、43 ストリーム履歴情報。
Claims (7)
- 複数のブロックを有する不揮発性メモリと、
前記不揮発性メモリを制御し、
第1ストリームIDと、前記第1ストリームIDに対応付けられたデータである第1データがライトされるブロックである第1ブロックとの対応関係を第1情報に記録し、
前記第1データに関する情報である第2情報を収集し、収集された第2情報に基づいて、前記第1情報における前記第1ストリームIDと前記第1ブロックとの前記対応関係を無効にするメモリコントローラと
を備えるメモリシステム。 - 前記メモリコントローラは、前記収集された第2情報をホストに提供する、
請求項1に記載のメモリシステム。 - 前記メモリコントローラは、第1ストリームIDおよび第1データが指定された第1コマンドをホストから受信したときに、前記第2情報を収集する
請求項1に記載のメモリシステム。 - 前記第2情報は、前記第1データのデータサイズを含み、
前記メモリコントローラは、前記第1データのデータサイズと所定の設定値との差が第1の閾値より小さい場合、前記対応関係を無効にする
請求項1または2に記載のメモリシステム。 - 前記第2情報は、前記第1ブロックのサイズに対する、前記第1データのうちの無効化されたデータのサイズの割合であり、
前記メモリコントローラは、前記割合が第2の閾値より大きい場合、前記対応関係を無効にする
請求項1または2に記載のメモリシステム。 - 前記第2情報は、前記第1データについてのコンパクション回数であり、
前記メモリコントローラは、前記コンパクション回数が第3の閾値より多い場合、前記対応関係を無効にする
請求項1または2に記載のメモリシステム。 - 前記第2情報は、前記第1ストリームIDに対応付けられた各データについてのアクセス頻度情報であり、
前記アクセス頻度情報が、前記第1ストリームIDに対応付けられた第1コマンドと、前記第1ストリームIDに対応付けられた第2コマンドとで異なる場合、前記メモリコントローラは、前記対応関係を無効にする
請求項1または2に記載のメモリシステム。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2017058217A JP2018160189A (ja) | 2017-03-23 | 2017-03-23 | メモリシステム |
| US15/693,444 US10235284B2 (en) | 2017-03-23 | 2017-08-31 | Memory system |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2017058217A JP2018160189A (ja) | 2017-03-23 | 2017-03-23 | メモリシステム |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2018160189A true JP2018160189A (ja) | 2018-10-11 |
Family
ID=63582710
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2017058217A Pending JP2018160189A (ja) | 2017-03-23 | 2017-03-23 | メモリシステム |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US10235284B2 (ja) |
| JP (1) | JP2018160189A (ja) |
Families Citing this family (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR102336666B1 (ko) * | 2017-09-15 | 2021-12-07 | 삼성전자 주식회사 | 메모리 장치 및 이를 포함하는 메모리 시스템 |
| CN109582243B (zh) * | 2018-12-03 | 2022-04-12 | 深圳市得一微电子有限责任公司 | 主控内存的存储扩展方法、装置、可读存储介质及系统 |
| KR102806961B1 (ko) * | 2019-03-05 | 2025-05-16 | 에스케이하이닉스 주식회사 | 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작 방법 |
| US11500587B2 (en) * | 2020-11-20 | 2022-11-15 | Samsung Electronics Co., Ltd. | System and method for in-SSD data processing engine selection based on stream IDs |
| KR20220101349A (ko) * | 2021-01-11 | 2022-07-19 | 삼성전자주식회사 | 스토리지 장치의 데이터 기입 방법 및 이를 수행하는 스토리지 장치 |
| CN114942728A (zh) * | 2022-06-15 | 2022-08-26 | 三星(中国)半导体有限公司 | 用于数据存储的方法和装置 |
Family Cites Families (17)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH11339405A (ja) * | 1998-05-27 | 1999-12-10 | Sony Corp | ディジタル記録再生装置 |
| US7366826B2 (en) | 2004-12-16 | 2008-04-29 | Sandisk Corporation | Non-volatile memory and method with multi-stream update tracking |
| US7315916B2 (en) | 2004-12-16 | 2008-01-01 | Sandisk Corporation | Scratch pad block |
| US7752381B2 (en) * | 2005-05-24 | 2010-07-06 | Micron Technology, Inc. | Version based non-volatile memory translation layer |
| WO2008026466A1 (en) * | 2006-08-31 | 2008-03-06 | Sharp Kabushiki Kaisha | File system |
| JP5010505B2 (ja) * | 2008-03-01 | 2012-08-29 | 株式会社東芝 | メモリシステム |
| US8335912B2 (en) * | 2009-04-22 | 2012-12-18 | Oracle America, Inc. | Logical map table for detecting dependency conditions between instructions having varying width operand values |
| JP2011175615A (ja) | 2010-01-27 | 2011-09-08 | Toshiba Corp | ホスト装置およびメモリデバイス |
| US9448919B1 (en) * | 2012-11-13 | 2016-09-20 | Western Digital Technologies, Inc. | Data storage device accessing garbage collected memory segments |
| US9582358B2 (en) | 2014-09-30 | 2017-02-28 | Sandisk Technologies Llc | Initialization scheme during dual programming of a memory system |
| JP2016170583A (ja) | 2015-03-12 | 2016-09-23 | 株式会社東芝 | メモリシステムおよび情報処理システム |
| US20160283125A1 (en) * | 2015-03-25 | 2016-09-29 | Kabushiki Kaisha Toshiba | Multi-streamed solid state drive |
| 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 |
| JP6403164B2 (ja) | 2015-09-11 | 2018-10-10 | 東芝メモリ株式会社 | メモリシステム |
| US9898202B2 (en) * | 2015-11-30 | 2018-02-20 | Samsung Electronics Co., Ltd. | Enhanced multi-streaming though statistical analysis |
| US10235079B2 (en) * | 2016-02-03 | 2019-03-19 | Toshiba Memory Corporation | Cooperative physical defragmentation by a file system and a storage device |
| US10622089B2 (en) * | 2016-10-18 | 2020-04-14 | Toshiba Memory Corporation | Storage system having a host that manages physical data locations of storage device |
-
2017
- 2017-03-23 JP JP2017058217A patent/JP2018160189A/ja active Pending
- 2017-08-31 US US15/693,444 patent/US10235284B2/en active Active
Also Published As
| Publication number | Publication date |
|---|---|
| US20180276115A1 (en) | 2018-09-27 |
| US10235284B2 (en) | 2019-03-19 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US11669444B2 (en) | Computing system and method for controlling storage device | |
| US11467955B2 (en) | Memory system and method for controlling nonvolatile memory | |
| CN109240938B (zh) | 存储系统以及控制非易失性存储器的控制方法 | |
| CN106874211B (zh) | 存储器系统及非易失性存储器的控制方法 | |
| US9274942B2 (en) | Information processing system and nonvolatile storage unit | |
| US10296455B2 (en) | Memory system and control method of nonvolatile memory | |
| JP6785204B2 (ja) | メモリシステムおよび制御方法 | |
| US20220350530A1 (en) | Memory system and control method | |
| JP2020046963A (ja) | メモリシステムおよび制御方法 | |
| JP7392080B2 (ja) | メモリシステム | |
| CN116909941A (zh) | 存储器系统及控制非易失性存储器的方法 | |
| US9201784B2 (en) | Semiconductor storage device and method for controlling nonvolatile semiconductor memory | |
| US10235284B2 (en) | Memory system | |
| JP2018049522A (ja) | メモリシステム及び制御方法 | |
| JP2022171773A (ja) | メモリシステムおよび制御方法 | |
| JP7524443B2 (ja) | メモリシステムおよび制御方法 | |
| JP7567009B2 (ja) | メモリシステムおよび制御方法 | |
| JP7337228B2 (ja) | メモリシステムおよび制御方法 | |
| JP6721765B2 (ja) | メモリシステムおよび制御方法 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20170605 |
|
| A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20180905 |