JP6524039B2 - メモリシステム及び制御方法 - Google Patents

メモリシステム及び制御方法 Download PDF

Info

Publication number
JP6524039B2
JP6524039B2 JP2016185477A JP2016185477A JP6524039B2 JP 6524039 B2 JP6524039 B2 JP 6524039B2 JP 2016185477 A JP2016185477 A JP 2016185477A JP 2016185477 A JP2016185477 A JP 2016185477A JP 6524039 B2 JP6524039 B2 JP 6524039B2
Authority
JP
Japan
Prior art keywords
data
block
garbage collection
write
invalid data
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
Application number
JP2016185477A
Other languages
English (en)
Other versions
JP2018049522A (ja
Inventor
菅野 伸一
伸一 菅野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kioxia Corp
Original Assignee
Toshiba Memory Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Toshiba Memory Corp filed Critical Toshiba Memory Corp
Priority to JP2016185477A priority Critical patent/JP6524039B2/ja
Priority to US15/441,068 priority patent/US10761733B2/en
Publication of JP2018049522A publication Critical patent/JP2018049522A/ja
Application granted granted Critical
Publication of JP6524039B2 publication Critical patent/JP6524039B2/ja
Priority to US16/940,269 priority patent/US11474702B2/en
Priority to US17/942,388 priority patent/US12019872B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/068Hybrid storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7204Capacity control, e.g. partitioning, end-of-life degradation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7206Reconfiguration of flash memory system

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)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明の実施形態は、不揮発性メモリを制御する技術に関する。
近年、不揮発性メモリを備えるメモリシステムが広く利用されている。このようなメモリシステムの一つとして、NANDフラッシュ技術ベースのソリッドステートドライブ(SSD)が知られている。SSDは、その低電力消費、高性能という特徴により、様々なコンピュータのメインストレージとして使用されている。
最近では、ホストとメモリシステムとの間のデータ入出力に関する性能のさらなる向上が要求されている。
特許第4358299号公報
ホストとメモリシステムとの間のデータ入出力の性能向上を図るためには、ライトレイテンシーの変動を低減するための新たな機能の実現が必要とされる。
本発明が解決しようとする課題は、ライトレイテンシーの変動を低減できるメモリシステム及び制御方法を提供することである。
実施形態によれば、メモリシステムは、不揮発性メモリと、コントローラとを具備する。前記コントローラは、前記不揮発性メモリに電気的に接続される。前記コントローラは、前記不揮発性メモリからガベージコレクションの対象ブロックとして選択された第1ブロック内のデータ部を順に選択し、前記選択されたデータ部が有効データであるならば、当該データ部を、前記不揮発性メモリ内のフリーブロック群から前記ガベージコレクションのためのコピー先ブロックとして割り当てられた第2ブロックにコピーし、前記選択されたデータ部が無効データであるならば、前記ガベージコレクション動作中に見つけられた無効データ部の数を示す累積無効データ数に1を加算するガベージコレクション動作を実行する。前記コントローラは、前記累積無効データ数の範囲内でホストからの書き込みデータ部の受付を許可し、且つ受付た書き込みデータ部の数だけ前記累積無効データ数を減少させる。
実施形態に係るメモリシステムを含む情報処理システムの構成例を示すブロック図。 同実施形態のメモリシステムによるデータ書き込み動作とガベージコレクション動作とを説明するための図。 図2のデータ書き込み動作が行われた場合のデータの流れの例を説明するための図。 図2のデータ書き込み動作及びガベージコレクション動作が行われた場合のデータの流れの例を説明するための図。 同実施形態のメモリシステムによって実行される書き込み処理の手順の例を示すフローチャート。 同実施形態のメモリシステムによって実行されるホスト書き込み先ブロック割り当て処理の手順の例を示すフローチャート。 同実施形態のメモリシステムによって実行されるガベージコレクション処理の手順の例を示すフローチャート。 同実施形態のメモリシステムがマルチネームスペース機能を有する場合のデータ書き込み動作とガベージコレクション動作との例を説明するための図。 同実施形態のメモリシステムによって実行される書き込み処理の手順の別の例を示すフローチャート。 同実施形態のメモリシステムによって実行されるホスト書き込み先ブロック割り当て処理の手順の別の例を示すフローチャート。 同実施形態のメモリシステムによって実行されるガベージコレクション処理の手順の別の例を示すフローチャート。 同実施形態のメモリシステムがマルチネームスペース機能を有する場合のデータ書き込み動作とガベージコレクション動作との別の例を説明するための図。 ホストの構成例を説明するブロック図。 同実施形態のメモリシステムとホストとを含むコンピュータの構成例を示すブロック図。
以下、実施の形態について図面を参照して説明する。
まず、図1を参照して、一実施形態に係るメモリシステムを含む情報処理システム1の構成を説明する。
このメモリシステムは、不揮発性メモリにデータをライトし、不揮発性メモリからデータをリードするように構成された半導体ストレージデバイスである。このメモリシステムは、例えば、NANDフラッシュ技術ベースのソリッドステートドライブ(SSD)3として実現されている。
この情報処理システム1は、ホスト計算機(以下、ホストとも称する)2と、SSD3とを含む。ホスト2は、SSD3にデータに保存するように構成された情報処理装置(コンピューティングデバイス)である。この情報処理装置の例には、サーバコンピュータ及びパーソナルコンピュータが含まれる。
SSD3は、ホスト2として機能する情報処理装置に内蔵されてもよいし、この情報処理装置にケーブルまたはネットワークを介して接続されてもよい。
ホスト2とSSD3とを相互接続するためのインターフェースとしては、SCSI、Serial Attached SCSI(SAS)、ATA、Serial ATA(SATA)、PCI Express(PCIe)、NVM Express(NVMe)、Ethernet(登録商標)、Fibre channel等を使用し得る。
SSD3は、コントローラ4、不揮発性メモリ(NANDメモリ)5、及びDRAM6を備えていてもよい。NANDメモリ5は、限定されないが、複数のNANDフラッシュメモリチップを含んでいてもよい。
NANDメモリ5はメモリセルアレイを含み、このメモリセルアレイは、多数のNANDブロック(ブロック)B0〜Bm−1を含む。ブロックB0〜Bm−1は、消去単位として機能する。ブロックは「物理ブロック」または「消去ブロック」と称されることもある。
ブロックB0〜Bm−1は多数のページ(物理ページ)を含む。つまり、ブロックB0〜Bm−1の各々は、ページP0〜Pn−1を含む。同じワード線に接続された複数のメモリセルが一つのページとして編成される。NANDメモリ5においては、データのリード及びデータのライトはページ単位で実行される。データの消去は複数ページを含むブロック単位で実行される。
コントローラ4は、Toggle、ONFIのようなNANDインターフェース13を介して、不揮発性メモリであるNANDメモリ5に電気的に接続されている。コントローラ4は、NANDメモリ5のデータ管理とNANDメモリ5のブロック管理とを実行するように構成されたフラッシュトランスレーション層(FTL)として機能し得る。
データ管理には、(1)論理ブロックアドレス(LBA)と物理アドレスとの間の対応関係を示すマッピング情報の管理、(2)ページ単位のリード/ライトとブロック単位の消去動作とを隠蔽するための処理、等が含まれる。LBAと物理アドレスとの間のマッピングの管理は、論理物理アドレス変換テーブルとして機能するルックアップテーブル(LUT)33を用いて実行される。ルックアップテーブル(LUT)33は、所定の管理サイズ単位で、LBAと物理アドレスとの間のマッピングを管理サイズ単位で管理する。ホスト2からのライトコマンドの多くは、4Kバイトのデータの書き込みを要求する。したがって、ルックアップテーブル(LUT)33は、例えば4Kバイトの管理サイズ単位で、LBAと物理アドレスとの間のマッピングを管理してもよい。あるLBAに対応する物理アドレスは、このLBAのデータがライトされたNANDメモリ5内の物理記憶位置を示す。物理アドレスは、物理ブロックアドレスと物理ページアドレスとを含む。物理ページアドレスは全てのページに割り当てられており、また物理ブロックアドレスは全てのブロックに割り当てられている。
ページへのデータ書き込みは、1消去サイクル当たり1回のみ可能である。
このため、コントローラ4は、同じLBAへのライト(上書き)を、NANDメモリ5上の別のページにマッピングする。つまり、コントローラ4は、この別のページにデータをライトする。そして、コントローラ4は、ルックアップテーブル(LUT)33を更新してこのLBAをこの別のページに関連付けると共に、元のページ(つまりこのLBAが関連付けられていた古いデータ)を無効化する。
ブロック管理には、不良ブロックの管理と、ウェアレベリングと、ガベージコレクション動作等が含まれる。
ガベージコレクション動作は、NANDメモリ5内のフリースペースを作り出すための動作である。このガベージコレクション動作は、NANDメモリ5のフリーブロックの個数を増やすため、有効データと無効データとが混在する一つ以上のブロック内の全ての有効データを別のブロック(コピー先フリーブロック)にコピーする。そして、ガベージコレクション動作は、ルックアップテーブル(LUT)33を更新して、コピーされた有効データのLBAそれぞれを正しい物理アドレスにマッピングする。有効データが別のブロックにコピーされることによって無効データのみになったブロックはフリーブロックとして解放される。これによって、このブロックは消去後に再利用することが可能となる。
ホスト2は、ライトコマンドをSSD3に送出する。このライトコマンドは、書き込みデータ(つまり書き込むべきライトデータ)の論理アドレス(開始論理アドレス)と、転送長とを含む。この実施形態においては、LBAが論理アドレスとして使用されるが、他の実施形態においてはオブジェクトIDが論理アドレスとして使用されても良い。
SSD3のコントローラ4は、ライトコマンド内の開始論理アドレスと転送長とによって指定されるライトデータを、NANDメモリ5内のブロックのページにライトする。さらに、コントローラ4は、ルックアップテーブル(LUT)33を更新することによって、ライトされたデータに対応するLBAを、このデータがライトされた物理記憶位置を示す物理アドレスにマッピングする。
より詳しくは、コントローラ4は、NANDメモリ5内のフリーブロックの一つを、ホスト2からのデータの書き込みのための書き込み先ブロックとして割り当てる。この書き込み先ブロックは、ホスト2からのデータが書き込まれるべきブロックであり、「書き込み対象ブロック」、または「入力ブロック」、等とも称される。コントローラ4は、ホスト2から受信されるライトデータのLBAとは無関係に、ルックアップテーブル(LUT)33を更新しながら、ホスト2から受信されるライトデータを書き込み先ブロックの利用可能ページに順次書き込む。書き込み先ブロックに利用可能ページが無くなった場合に、コントローラ4は、新たなフリーブロックを書き込み先ブロックとして割り当てる。
次に、コントローラ4の構成について説明する。
コントローラ4は、ホストインターフェース11、CPU12、NANDインターフェース13、DRAMインターフェース14等を含む。これらCPU12、NANDインターフェース13、DRAMインターフェース14は、バス10を介して相互接続される。
ホストインターフェース11は、ホスト2から様々なコマンドを受信する。このコマンドは、例えば、ライトコマンド、リードコマンド、及び消去コマンドである。
CPU12は、ホストインターフェース11、NANDインターフェース13、DRAMインターフェース14を制御するように構成されたプロセッサである。CPU12は、NANDメモリ5を管理する物理リソース管理処理、ホスト2から受信される様々なコマンドを処理するためのコマンド処理等を実行する。物理リソース管理処理及びコマンド処理は、CPU12によって実行されるファームウェアによって制御されてもよい。
このファームウェアは、CPU12を、ガベージコレクション制御部21、ライト制御部22、リード制御部23、及びネームスペース管理部24として機能させる。
ガベージコレクション制御部21は、ガベージコレクション動作の実行を制御する。上述したように、ガベージコレクション動作は、NANDメモリ5内のフリースペースを作り出すための動作である。このガベージコレクション動作により、有効データと無効データとが混在するいくつかのブロック内の全ての有効データが別のブロックにコピーされる。ガベージコレクション制御部21は、ブロック選択部211、データコピー制御部212及び累積無効データ数計測部213を含む。
ブロック選択部211は、NANDメモリ5内の多数のブロックから、ガベージコレクションの対象ブロックを選択する。
データコピー制御部212は、ガベージコレクションにおけるデータコピー動作を実行する。データコピー制御部212は、ガベージコレクションの対象ブロック内の有効データを、ガベージコレクションのためのコピー先ブロックにコピーするための動作を制御する。ガベージコレクションのためのコピー先ブロックは、ガベージコレクションのための書き込み先ブロックとも称される。
累積無効データ数計測部213は、ガベージコレクション動作中に発見された無効データ部の数計測することによって累積無効データ数を算出する。無効データ部の数の計測(カウント)は、例えば、上述の管理サイズ(例えば4KB)単位で実行されてもよい。累積無効データ数は、ガベージコレクション動作中に発見された無効データ部の数(総数)を示す。さらに、累積無効データ数計測部213は、ホスト2から受付た書き込みデータ部の数だけ累積無効データ数を減少させる。換言すれば、累積無効データ数計測部213は、ホスト2からの書き込み要求を受け入れた場合、その書き込み要求によって指定された書き込みデータのデータサイズに相当する数を、累積無効データ数から減算する。例えば、16KBの書き込みデータを書き込むための書き込み要求が受け入れられたならば、4個の書き込みデータ部(4×4KB)が受付られ、そして累積無効データ数から4が減算される。
ライト制御部22は、ホスト2からの書き込み要求(ライトコマンド)に応じた書き込み動作を制御する。ライト制御部22は、累積無効データ数の範囲内でホスト2からの書き込みデータ部の受付を許可する。つまり、ライト制御部22は、累積無効データ数を上限とする数の書き込みデータ部をホスト2から受付けることができる。ライト制御部22は、受付た書き込みデータ部それぞれを、ホスト2の書き込み先ブロックに書き込む。
リード制御部23は、ホスト2からの読み出し要求(リードコマンド)に応じた読み出し動作を制御する。リード制御部23は、例えば、読み出し要求によって指定されたLBAのデータをNANDメモリ5から読み出し、読み出されたデータをホスト2に送信する。
ネームスペース管理部24は、SSD3をあたかも複数のドライブであるかのように扱うことを可能にするために、複数のネームスペースそれぞれに対応する複数の論理アドレス空間(LBA空間)を管理する。各ネームスペースには、指定された数のブロックが確保(予約)される。確保されるブロックの数はネームスペース毎に異なっていてもよい。ネームスペース管理部24は、NANDメモリ5を、複数のネームスペースに関連付けられた複数の領域に論理的に分割する。例えば、第1ネームスペースと第2ネームスペースとがクリエイトされた場合には、ネームスペース管理部24は、NANDメモリ5を、第1ネームスペースに関連付けられた書き込みデータ部それぞれを書き込むための第1領域と第2ネームスペースに関連付けられた書き込みデータ部それぞれを書き込むための第2領域とに論理的に分割する。
第1ネームスペースの識別子(NSID#1)に関連付けられた書き込み要求によって指定される書き込みデータ(つまり、第1ネームスペースに関連付けられた書き込みデータ部それぞれ)は、第1領域(第1ネームスペース)に書き込み先ブロックとして割り当てられたブロックに書き込まれる。この書き込み先ブロックがデータで満たされたならば、新たなブロックが第1領域(第1ネームスペース)に新たな書き込み先ブロックとして割り当てられる。
第2ネームスペースの識別子(NSID#2)に関連付けられた書き込み要求によって指定される書き込みデータ(つまり、第2ネームスペースに関連付けられた書き込みデータ部それぞれ)は、第2領域(第2ネームスペース)に書き込み先ブロックとして割り当てられたブロックに書き込まれる。この書き込み先ブロックがデータで満たされたならば、新たなブロックが第2領域(第2ネームスペース)に新たな書き込み先ブロックとして割り当てられる。
図2を参照して、ガベージコレクション制御部21によるガベージコレクション動作と、ライト制御部22による書き込み動作とについて説明する。
まず、ガベージコレクション動作について説明する。
ブロック選択部211は、アクティブブロック群55からガベージコレクションの対象ブロック551(以下、GC対象ブロックとも称する)を選択する。アクティブブロック群55には、現在使用されているブロック、すなわち、アクティブブロックが含まれている。アクティブブロックは、ホスト2からのデータを含むブロックである。無効データ数保持部34は、各ブロックに含まれる無効データの数を保持していてもよい。ブロック選択部211は、この無効データ数保持部34を参照することにより、例えば無効データが含まれている割合が高いブロックを、ガベージコレクションの対象ブロック551として選択してもよい。
データコピー制御部212は、GC対象ブロック551内のデータ部それぞれを順に選択する。データコピー制御部212は、あるデータ部が選択された時、選択されたデータ部が有効データであるか、それとも無効データであるかを判定する。無効データは、もはや使用されないデータ、つまりLBAが関連付けられていないデータを意味する。有効データは、使用中のデータ、つまりLBAが関連付けられているデータを意味する。選択されたデータ部が有効データである場合、データコピー制御部212はそのデータ部をGCバッファ32に一時的に書き込む。また、選択されたデータ部が無効データである場合、データコピー制御部212はそのデータ部をGCバッファ32に書き込むことなくスキップする。さらに、累積無効データ数計測部213は、データコピー制御部212によって一つの選択されたデータ部が無効データであると判定される度に、累積無効データ数に1を加算する。
データコピー制御部212は、GCバッファ32に書き込まれているデータを、例えば、1ページ分ずつ、ガベージコレクションのコピー先ブロック512(以下、GCコピー先ブロックとも称する)に書き込む。このGCコピー先ブロック512はフリーブロック群51から割り当てられたブロックである。フリーブロック群51には、現在使用されていないブロック、すなわち、フリーブロックが含まれている。なお、データコピー制御部212は、GCコピー先ブロックがまだ割り当てられていない場合には、フリーブロック群51内の一つのフリーブロックを、新たなGCコピー先ブロック512として割り当てる。また、データコピー制御部212は、割り当てられているGCコピー先ブロック512の終端までデータが書き込まれた場合、そのGCコピー先ブロック512をアクティブブロック群55に移動する。
データコピー制御部212は、GC対象ブロック551内の全ての有効データ部が、GCコピー先ブロック512に書き込まれた(コピーされた)場合、このGC対象ブロック551をフリーブロック群51に移動する。データコピー制御部212は、このGC対象ブロック551がフリーブロックとして解放されたことをブロック選択部211に通知するようにしてもよい。ブロック選択部211は、必要に応じて、新たなGC対象ブロックを選択してもよい。
次いで、ホスト2からの書き込み要求に応じた書き込み動作について説明する。
ライト制御部22はホスト2からの書き込み要求を受信する。この書き込み要求には、書き込まれるべきデータのデータサイズを指定する情報(転送長)が含まれている。ライト制御部22は、累積無効データ数の範囲内でホスト2からの書き込みデータ部の受付を許可する。例えば、現在の累積無効データ数が4であれば、ライト制御部22は、最大で、4つの書き込みデータ部(16KBの書き込みデータ=4×4KB)を受付ることができる。このため、書き込み要求によって指定されているデータサイズに相当するデータ部の数が累積無効データ数以下である場合に、ライト制御部22は、書き込み要求によって指定されているデータサイズの書き込みデータを受け入れ可能であると判断し、ホスト2に応答する。
この応答は書き込みが許可されたことを示すので、ホスト2は、この応答に応じてSSD3に書き込みデータを送信する。
ライト制御部22は、ホスト2から書き込みデータ部それぞれを受付、受付た書き込みデータ部それぞれをライトバッファ31に一時的に書き込む。また、累積無効データ数計測部213は、累積無効データ数から、受付た書き込みデータ部の数を減算することによって、ホスト2から受付た書き込みデータ部の数だけ累積無効データ数を減少させる。ライト制御部22は、ライトバッファ31に書き込まれた書き込みデータ部それぞれを、例えばページ単位で、ホスト2用の書き込み先ブロック511に書き込む。
なお、ライト制御部22は、ホスト2の書き込み先ブロック511がまだ割り当てられていない場合、割り当てられている書き込み先ブロック511の終端までデータが書き込まれた場合、又は書き込み先ブロック511にエラーが発生した場合には、フリーブロック群51内の一つのフリーブロックを、新たな書き込み先ブロック511として割り当てる。また、ライト制御部22は、割り当てられている書き込み先ブロック511の終端までデータが書き込まれた場合、その書き込み先ブロック511をアクティブブロック群55に移動する。
累積無効データ数計測部213は、ホスト2の書き込み先ブロック511が新たに割り当てられた時、フリーブロック群51に含まれている残りのフリーブロックの数が閾値以上であるか否かを判定する。フリーブロック群51に含まれている残りのブロックの数が閾値以上である場合、累積無効データ数計測部213は、累積無効データ数に、新たに割り当てられた書き込み先ブロック511に書き込み可能なデータ部の数を加算する。書き込み先ブロック511に書き込み可能なデータ部の数は、このブロックの容量に相当するデータ部の数である。さらに、累積無効データ数計測部213は、ライトバッファ31に現在蓄積されているデータ部がある場合には、累積無効データ数からそのデータ部の数を減算するようにしてもよい。また、フリーブロック群51に含まれている残りのフリーブロックの数が閾値未満である場合、累積無効データ数計測部213は、累積無効データ数に0を設定する。さらに、累積無効データ数計測部213は、ライトバッファ31に現在蓄積されているデータ部がある場合には、累積無効データ数からそのデータ部の数を減算するようにしてもよい。
なお、ライト制御部22は、書き込み要求によって指定されたデータサイズの書き込みデータを受け入れ可能でない場合には、その書き込みデータを受け入れ可能になるまでホスト2に応答しない。ライト制御部22は、例えば、書き込み要求によって指定されたデータサイズに相当するデータの数が累積無効データ数を超える場合に、書き込み要求によって指定されているデータサイズの書き込みデータを受け入れられないと判断し、ホスト2に応答しない。そして、ライト制御部22は、上述したガベージコレクション動作によって増加した累積無効データ数が、書き込み要求によって指定されたデータサイズに相当するデータの数以上となった場合に、書き込み要求によって指定されているデータサイズの書き込みデータを受け入れ可能であると判断し、ホスト2に応答する。
図3を参照して、データ書き込み動作が行われる場合のNANDメモリ5及びライトバッファ31上のデータの流れを説明する。ここでは、フリーブロック群51に閾値以上の数のフリーブロックが含まれている場合を想定する。
(1)まず、フリーブロック群51からホスト2の書き込み先ブロック511Aが割り当てられ、累積無効データ数に書き込み先ブロック511Aのブロックサイズに相当するデータ数が設定される。例えば、管理サイズが4KB、ページサイズが16KB、ブロック当たりのページの数が256である場合には、このブロックサイズに相当するデータ数は、例1024(=16KB÷4KB×256)である。
(2)そして、累積無効データ数分の書き込みデータ部A1,A2,...,Axがホスト2から受付られ、この書き込みデータ部A1,A2,...,Axがライトバッファ31に一時的に書き込まれる。その際、累積無効データ数は1つの書き込みデータが受付られる毎に1ずつ減算される。
(3)ライトバッファ31内の書き込みデータ部A1,A2,...,Axは、ページ単位で書き込み先ブロック511Aに書き込まれる。
(4)書き込み先ブロック511Aの終端までデータが書き込まれた場合、フリーブロック群51から新たな書き込み先ブロック511Bが割り当てられる。そして、累積無効データ数にはブロックサイズに相当するデータ数(例えば、1024)が設定される。
(5)次いで、累積無効データ数分の書き込みデータ部B1,B2,...,Bxがホスト2から受付られ、この書き込みデータ部B1,B2,...,Bxがライトバッファ31に一時的に書き込まれる。その際、累積無効データ数は1つの書き込みデータ部が受付られる毎に1ずつ減算される。
(6)ライトバッファ31内の書き込みデータ部B1,B2,...,Bxは、ページ単位で書き込み先ブロック511Bに書き込まれる。
このように、フリーブロック群51に閾値以上の数のフリーブロックが含まれている間は、ホスト2の書き込み先ブロックの割り当てとそのブロックへのデータの書き込みとが繰り返し行われることになる。
次いで、図4を参照して、ガベージコレクション動作とデータ書き込み動作とが行われる場合の、NANDメモリ5、ライトバッファ31及びGCバッファ32上のデータの流れを説明する。ここでは、フリーブロック群51に閾値未満の数のフリーブロックが含まれている場合を想定する。
(1)まず、ガベージコレクションの対象ブロック551の先頭から順に未処理のデータ部が選択される。あるデータ部が選択された場合、選択されたデータ部が有効データまたは無効データのいずれであるかが判定される。そして、データ部が無効データである場合には累積無効データ数に1が加算され、データ部が有効データである場合には、そのデータ部がGCバッファ32にコピーされる。
例えば、第1ページの4つのデータ部D1,D2,D3,及びD4がそれぞれ無効データ、無効データ、有効データ、有効データである場合、無効データ部D1が検出されたことに応じて累積無効データ数に1が加算される。同様に、無効データ部D2が検出されたことに応じて累積無効データ数に1が加算される。そして、有効データ部D3及びD4がGCバッファ32にコピーされる。なお、実際には、データ読み出しはページ単位で実行されるので、4つのデータ部D1,D2,D3,及びD4が同時に読み出され、これらデータ部内の有効データ部D3及びD4のみがGCバッファ32に蓄積されてもよい。第2ページの4つのデータ部D5,D6,D7,及びD8が無効データ、無効データ、無効データ、有効データである場合、無効データ部D5が検出されたことに応じて累積無効データ数に1が加算される。同様に、無効データ部D6が検出されたことに応じて累積無効データ数に1が加算され、無効データ部D7が検出されたことに応じて累積無効データ数に1が加算される。そして、有効データD8がGCバッファ32にコピーされる。上述したように、実際には、データ読み出しはページ単位で実行されるので、4つのデータ部D5,D6,D7,及びD8が同時に読み出され、これらデータ部内の有効データ部D8のみがGCバッファ32に蓄積されてもよい。第3ページの4つのデータD9,D10,D11,及びD12が有効データ、有効データ、無効データ、無効データである場合、有効データ部D9及びD10がGCバッファ32にコピーされる。そして、無効データD11が検出されたことに応じて累積無効データ数に1が加算される。同様に、無効データD12が検出されたことに応じて累積無効データ数に1が加算される。上述したように、実際には、データ読み出しはページ単位で実行されるので、4つのデータ部D9,D10,D11,及びD12が同時に読み出され、これらデータ部内の有効データ部D9、D10のみがGCバッファ32に蓄積されてもよい。
以上のように第1ページから第3ページまでのデータが処理されたことにより、GCバッファ32には1ページサイズ以上の有効データ部D3,D4,D8,D9,及びD10が蓄積され、累積無効データ数は7となる。
(2)そして、GCバッファ32に蓄積された有効データ部D3,D4,D8,D9,及びD10の内、1ページ分の有効データ部D3、D4、D8、及びD9が、ガベージコレクションのコピー先ブロック512にコピーされる。この時点で、ガベージコレクション動作が一時中断されてもよく、そしてデータ書き込み動作が実行されてもよい。
(3)データ書き込み動作では、累積無効データ数の範囲内で書き込みデータ部の受付が許可される。例えば、累積無効データ数分の書き込みデータ部W1,W2,...,W7がホスト2から受付られ、この書き込みデータ部W1,W2,...,W7がライトバッファ31に一時的に書き込まれる。その際、累積無効データ数は書き込みデータ部が受け入れられる毎に1ずつ減算される。したがって、7個の書き込みデータ部W1,W2,...,W7が受け入れられたことによって、累積無効データ数は0となる。
累積無効データ数が0となった場合、ホスト2からの新たな書き込みデータは受け入れられないので、例えば、この時点で、書き込み動作が一時中断されてもよく、そして続きのガベージコレクション動作が開始されてもよい。
(4)続きのガベージコレクション動作において、第4ページの4つのデータ部D13,D14,D15,及びD16が無効データ、有効データ、有効データ、有効データである場合、無効データ部D13が検出されたことに応じて累積無効データ数に1が加算される。そして、有効データ部D14,D15及びD16がGCバッファ32にコピーされる。上述したように、実際には、データ読み出しはページ単位で実行されるので、4つのデータ部D13,D14,D15,及びD16が同時に読み出され、これらデータ部内の有効データ部D14、D15、D16のみがGCバッファ32に蓄積されてもよい。
これにより、GCバッファ32には1ページサイズ以上の有効データ部D10,D14,D15,及びD16が蓄積され、累積無効データ数は1となる。
(5)GCバッファ32に蓄積された1ページ分の有効データ部D10,D14,D15,及びD16は、ガベージコレクションのコピー先ブロック512にコピーされる。この時点で、ガベージコレクション動作が一時中断されてもよく、そしてデータ書き込み動作が実行されてもよい。
(6)データ書き込み動作では、ライトバッファ31内の1ページ分の書き込みデータ部W1,W2,W3,及びW4が、書き込み先ブロック511Cに書き込まれる。
(7)そして、累積無効データ数分の書き込みデータ部W8がホスト2から受付けられ、この書き込みデータ部W8がライトバッファ31に一時的に書き込まれる。累積無効データ数は書き込みデータ部W8が受付られたことに応じて1だけ減算される。したがって、1個の書き込みデータ部W8が受付られたことによって、累積無効データ数は0となる。例えば、この時点で、書き込み動作が一時中断されてもよく、そして続きのガベージコレクション動作が開始されてもよい。
図5及び図6のフローチャートを参照して、SSD3によって実行される書き込み処理の手順の例を説明する。
図5のフローチャートに示すように、まず、SSD3のコントローラ4は、ホスト2の書き込み先ブロックにエラーが発生している状態、書き込み位置が書き込み先ブロックの終端である状態、及び書き込み先ブロックがまだ割り当てられていない状態のいずれかであるかどうかを判定する(ステップS101)。これら3つの状態のいずれかである場合(ステップS101のYES)、コントローラ4は、ホスト2の書き込み先ブロックの割り当て処理を実行する(ステップS102)。
このステップS102のホスト書き込み先ブロック割り当て処理の手順について、図6を参照して例示する。まず、コントローラ4は、フリーブロック群51に含まれるフリーブロックをホスト2の書き込み先ブロックとして割り当てる(ステップS21)。そして、コントローラ4は、フリーブロック群51に含まれる残りのフリーブロックの数が閾値以上であるか否かを判定する(ステップS22)。この閾値は、例えば1以上の値である。フリーブロック群51に含まれるフリーブロックの数が閾値以上である場合(ステップS22のYES)、コントローラ4は、累積無効データ数に、一つのブロックに相当するデータ数であるブロックサイズから、ライトバッファ31に蓄積されたデータ数を減算した値(すなわち、ブロックサイズ−蓄積データ数)を設定する(ステップS23)。そして、コントローラ4は、不足ブロック数に1を設定する(ステップS24)。
一方、フリーブロック群51に含まれる残りのフリーブロックの数が閾値未満である場合(ステップS22のNO)、コントローラ4は、累積無効データ数に、ライトバッファ31に蓄積されたデータ数に相当する負の値(すなわち、−蓄積データ数)を設定する(ステップS25)。そして、コントローラ4は、不足ブロック数を算出する(ステップS26)。コントローラ4は、例えば、使用できない不良ブロック(バッドブロック)の数と、ホスト2による書き込みのために次に使用されるブロックの分とを考慮して、不足ブロック数として、不良ブロックの数に1を加えた値を算出する。例えば、一つの不良ブロックが新たに発生したならば不足ブロックの数は2に設定され、二つの不良ブロックが新たに同時発生したならば不足ブロックの数は3に設定される。
図5のフローチャートに示すように、ステップS102のホスト書き込み先ブロック割り当て処理の手順が完了した後、あるいはホスト2の書き込み先ブロックにエラーが発生している状態、書き込み位置が書き込み先ブロックの終端である状態、及び書き込み先ブロックがまだ割り当てられていない状態のいずれでもない場合(ステップS101のNO)、コントローラ4は、ホスト2からの書き込みデータが閾値以上蓄積されているか否かを判定する(ステップS103)。この書き込みデータは、例えば、ライトバッファ31に格納されているデータである。書き込みデータが閾値以上蓄積されている場合、つまり閾値以上の数の書き込みデータ部がライトバッファ31に蓄積されている場合(ステップS103のYES)、コントローラ4は、蓄積されているデータを、ホスト2の書き込み先ブロックに書き込む(ステップS104)。コントローラ4は、例えば、書き込み先ブロックに対して、ページ単位でデータを書き込む。そして、コントローラ4は、書き込みのエラーが発生したか否かを判定する(ステップS105)。書き込みのエラーが発生した場合(ステップS105のYES)、コントローラ4は、ホスト2の書き込み先ブロックの割り当て処理を実行する(ステップS102)。このホスト書き込み先ブロック割り当て処理の手順は図6を参照して上述した通りである。
書き込みのエラーが発生していない場合(ステップS105のNO)、コントローラ4は書き込まれたデータに応じてLUT33を更新し(ステップS106)、ステップS107の手順に進む。コントローラ4は、LUT33を更新することによって、書き込まれたデータに対応するLBAそれぞれとNANDメモリ5上の物理アドレスそれぞれとをマッピングする。
また、書き込みデータが閾値以上蓄積されていない場合(ステップS103のNO)、ライトバッファ31に蓄積されているデータを書き込むための処理は行われず、ステップS107の手順に進む。
ステップS107の手順において、コントローラ4は、累積無効データ数が1以上であるか否かを判定する。累積無効データ数が1以上でない場合(ステップS107のNO)、コントローラ4は書き込み処理から抜け、ガベージコレクション処理を実行する。このガベージコレクション処理の手順については、図7を参照して後述する。
累積無効データ数が1以上である場合(ステップS107のYES)、コントローラ4は、累積無効データ数を不足ブロック数で除した値まで、ホスト2からのデータの受付を許可する(ステップS108)。なお、累積無効データ数を不足ブロック数で除した値の小数点以下の値は切り捨てとする。次いで、コントローラ4は、その受付許可の範囲内のデータ数(又はデータ量)が指定された、ホスト2からの書き込み要求(ライトコマンド)があるかどうかを判定する(ステップS109)。
受付許可の範囲内のデータ数(又はデータ量)が指定された書き込み要求がない場合(ステップS109のNO)、コントローラ4は、書き込み処理から抜け、ガベージコレクション処理を実行する。したがって、例えば、ホスト2が書き込み要求を発行しないホストアイドル状態の場合であっても、ガベージコレクション処理が進行される。
受付許可の範囲内のデータ数(又はデータ量)が指定された、ホスト2からの書き込み要求がある場合(ステップS109のYES)、コントローラ4は、そのホスト2からの書き込み要求に応答し、ホスト2から書き込みデータを受信する(ステップS110)。受信した書き込みデータは、ライトバッファ31に一時的に書き込まれる。コントローラ4は、累積無効データ数から、受信した書き込みデータ数に不足ブロック数を乗じた値を減算する(ステップS111)。そして、コントローラ4は、ライトバッファ31に一時的に書き込まれたデータに応じてLUT33を更新し(ステップS112)、ステップS107の手順に進む。コントローラ4は、LUT33を更新することによって、ライトバッファ31に一時的に書き込まれたデータに対応するLBAそれぞれとライトバッファ31(すなわち、DRAM6)上の物理アドレスそれぞれとをマッピングする。
次いで、図7を参照して、SSD3によって実行されるガベージコレクション処理の手順の例を説明する。
まず、SSD3のコントローラ4は、フリーブロック群51に含まれるフリーブロックの数が閾値以上であるか否かを判定する(ステップS301)。この閾値は、例えば1以上の値である。フリーブロック群51に含まれるフリーブロックの数が閾値以上である場合(ステップS301のYES)、コントローラ4はガベージコレクション処理を終了し、上述した書き込み処理を実行する。フリーブロック群51に含まれるフリーブロックの数が閾値以上である場合には、ガベージコレクション処理が実行されないことによって、ガベージコレクション処理が過剰に行われることを抑制することができる。
フリーブロック群51に含まれるフリーブロックの数が閾値未満である場合(ステップS301のNO)、コントローラ4は、未コピーの有効データが残っているガベージコレクションの対象ブロックがあるかどうかを判定する(ステップS302)。未コピーの有効データが残っているガベージコレクションの対象ブロックがない場合(ステップS302のNO)、コントローラ4は、新たなガベージコレクションの対象ブロックを選定する(ステップS303)。未コピーの有効データが残っているガベージコレクションの対象ブロックがある場合(ステップS302のYES)、ステップS303の手順がスキップされる。
次いで、コントローラ4は、ガベージコレクションの対象ブロックから未処理のデータを1個選択する(ステップS304)。データの選択は、管理サイズ(例えば4KB)と同じサイズを有する最小データ単位で実行される。コントローラ4は、選択された未処理のデータ部が有効データまたは無効データのいずれであるかを判定する(ステップS305)。選択された未処理のデータ部が有効データでない場合、すなわち、無効データである場合(ステップS305のNO)、コントローラ4は、累積無効データ数に1を加算する(ステップS306)。
一方、選択された未処理のデータ部が有効データである場合(ステップS305のYES)、コントローラ4は、そのデータ部をコピー用データとして蓄積する(ステップS307)。コントローラ4は、そのデータ部を、例えばコピーバッファ32に一時的に書き込む。そして、コントローラ4は、蓄積されたコピー用データ部の数が1ページ分以上であるか否かを判定する(ステップS308)。蓄積されたコピー用データの数が1ページ分未満である場合(ステップS308のNO)、ステップS302の手順に戻る。
蓄積されたコピー用データ部の数が1ページ分以上である場合(ステップS308のYES)、コントローラ4は、ガベージコレクションのコピー先ブロックが割り当てられているかどうかを判定する(ステップS309)。ガベージコレクションのコピー先ブロックが割り当てられていない場合(ステップS309のNO)、コントローラ4は、フリーブロック群51の一つのフリーブロックを、ガベージコレクションのコピー先ブロックとして割り当てる(ステップS310)。ガベージコレクションのコピー先ブロックが既に割り当てられている場合(ステップS309のYES)、ステップS310の手順がスキップされる。
コントローラ4は、ガベージコレクションのコピー先ブロックに、蓄積されたコピー用データの内、1ページ分のデータをコピーする(ステップS311)。そして、コントローラ4は、コピーされたデータに対応するLUT33を更新する(ステップS312)。コントローラ4は、LUT33を更新することによって、コピーされたデータに対応するLBAそれぞれとコピー先ブロック上の物理アドレスそれぞれとをマッピングする。
次いで、コントローラ4は、ガベージコレクションの対象ブロック内の、全ての有効データに対応するLUT33の更新が終了したかどうかを判定する(ステップS313)。全ての有効データに対応するLUT33の更新が終了していない場合(ステップS313のNO)、コントローラ4は書き込み処理を開始する。全ての有効データに対応するLUT33の更新が終了した場合(ステップS313のYES)、コントローラ4は、コピーが終了したガベージコレクションの対象ブロックをフリーブロックにし(ステップS314)、書き込み処理を開始する。
以上のように、本実施形態においては、ガベージコレクションの対象ブロック内のデータ部が順に一つずつ選択され、選択されたデータ部が有効データであるならば、当該データ部がGCのコピー先ブロックにコピーされ、選択されたデータ部が無効データであるならば、累積無効データ数に1が加算される。そして、この累積無効データ数の範囲内でホスト2からの書き込みデータ部の受付が許可される。累積無効データ数は、受付た書き込みデータ部の数だけ減少される。したがって、ガベージコレクション動作中に発見される無効データの数をカウントするという簡単な制御のみで、ホスト書き込みとガベージコレクション動作とを同期して進行させることができ、これによってライトレイテンシーの変動を減少させることができる。
ライトレイテンシーはデータの書き込みに要する応答時間を示す。最近では、ブロックサイズの増大により、ガベージコレクションのためにコピーすることが必要なデータ量が増えている。本実施形態では、ホスト書き込みとガベージコレクション動作との間の比率を、ブロック単位やページ単位ではなく、データ単位で制御することができる。つまり、本実施形態では、アドレス変換テーブルとして機能するLUT33を使用してLBAそれぞれとNANDメモリ5の物理アドレスそれぞれとの間のマッピングを管理サイズ単位で管理され、累積無効データ数は、この管理サイズ単位で、ガベージコレクション動作中に見つけられた無効データ部の数を示す。したがって、ライトレイテンシーを、ブロック単位やページ単位ではなく、管理サイズのような最小データ単位(つまり、最小粒度)で制御することが可能となり、安定したレイテンシーでホスト書き込みを行うことができる。
また、残りフリーブロック数および累積無効データ数以外の他のパラメータ(例えば、オーバープロビジョニングサイズ、等)は不要であるので、たとえオーバープロビジョニングサイズが動的に変更されても安定して動作することができる。
さらに、仮に、ブロックサイズがブロック毎に異なるようなケースであっても、ライトレイテンシーを、管理サイズのような最小データ単位(つまり、最小粒度)で安定して制御することができる。
図8は、SSD3がマルチネームスペース機能を有する場合のデータ書き込み動作とガベージコレクション動作の例を示す。ネームスペース管理部24は、SSD3をあたかも複数のドライブであるかのように扱うことを可能にするために、複数のネームスペースそれぞれに対応する複数の論理アドレス空間(LBA空間)を管理することができる。各ネームスペースには、LBA範囲(LBA0〜LBAn−1)が割り当てられる。LBA範囲のサイズ(つまりLBAの数)はネームスペース毎に可変であってもよい。各LBA範囲は、LBA0から始まる。各ネームスペースには、指定された数のブロックが確保される。確保されるブロックの数はネームスペース毎に異なっていてもよい。ネームスペース管理部24は、ネームスペース毎に異なるLUTを使用することによって、LBAそれぞれと物理アドレスそれぞれとの間のマッピングをネームスペース毎に個別に管理してもよい。例えば、NSID#1のネームスペース(第1領域)に関しては、コントローラ4は、NSID#1のネームスペース用のLUTを使用して、NSID#1のネームスペースのLBAそれぞれと第1領域の物理アドレスそれぞれとの間のマッピングを管理サイズ単位で管理する。NSID#nのネームスペース(第n領域)に関しては、コントローラ4は、NSID#nのネームスペース用のLUTを使用して、NSID#nのネームスペースのLBAそれぞれと第n領域の物理アドレスそれぞれとの間のマッピングを管理サイズ単位で管理する。
NANDメモリ5のフリーブロックは共通フリーブロックプール51で管理され、いくつかのブロックが、共通フリーブロックプール(フリーブロック群)51からNSID#1のネームスペースに割り当てられる。これら割り当てられたブロックは、NSID#1のネームスペースに関連付けられたデータの格納のために使用される。つまり、それらいくつかのブロックが、NSID#1のネームスペースに関連付けられたデータを格納するためのブロックとしてNSID#1のネームスペースに割り当てられる。NSID#nのネームスペースについても、同様にしてブロックが割り当てられる。これにより、NANDメモリ5は、NSID#1〜NSID#nのネームスペースそれぞれに対応する複数の領域に論理的に分割される。
SSD3においては、ネームスペース毎に独立した仮想フラッシュプールが設けられている。仮想フラッシュプール6−1は、NSID#1のネームスペース用に確保(予約)された物理リソース量(確保されたブロックの総数)を管理するために使用される。同様に、仮想フラッシュプール6−nは、NSID#nのネームスペース用に確保(予約)された物理リソース量(確保されたブロックの総数)を管理するために使用される。この場合、どのブロックを確保(予約)すべきかを考慮する必要はなく、確保(予約)すべきブロックの個数のみが各仮想フラッシュプールで管理される。
フリーブロックそれぞれは複数のネームスペースによって共有される共通フリーブロックプール51で管理される。各ネームスペースの仮想フラッシュプールから返却されたブロックは、共通フリーブロックプール51で管理される。
複数のネームスペースの各々では、図2を参照して上述したようなデータ書き込み動作とガベージコレクション動作とが行われる。
まず、NSID#1のネームスペースにおけるガベージコレクション動作について説明する。
ブロック選択部211は、アクティブブロックプール(アクティブブロック群)55−1からガベージコレクションの対象ブロック(GC対象ブロック)551−1を選択する。データコピー制御部212は、GC対象ブロック551−1内のデータ部それぞれを順に選択し、選択されたデータ部が有効データであれば、その選択されたデータ部をGCコピー先ブロック512−1に書き込む。また、選択されたデータ部が無効データであれば、累積無効データ数計測部213は、NSID#1のネームスペースの累積無効データ数に1を加算する。
GCコピー先ブロック512−1は共通フリーブロックプール51から割り当てられたブロックである。データコピー制御部212は、割り当てられているGCコピー先ブロック512−1の終端までデータが書き込まれた場合、そのGCコピー先ブロック512−1をアクティブブロックプール55−1に移動する。
また、データコピー制御部212は、GC対象ブロック551−1内の全ての有効データが、GCコピー先ブロック512−1に書き込まれた場合、このGC対象ブロック551−1を共通フリーブロックプール51に移動する。
次いで、ホスト2からのNSID#1のネームスペースへの書き込み要求に応じた書き込み動作について説明する。
NSID#1を含む書き込み要求(ライトコマンド)は、NSID#1のネームスペース用のライト制御部22に送られる。ライト制御部22は、NSID#1のネームスペースの累積無効データ数の範囲内で、NSID#1のネームスペースに関連付けられた書き込みデータ部の受付を許可する。つまり、ライト制御部22は、NSID#1のネームスペースに関連付けられた書き込みデータ部を、累積無効データ数を上限とする数だけホスト2から受付けることができる。ライト制御部22は、受付た書き込みデータそれぞれをライトバッファ31−1に一時的に書き込む。また、累積無効データ数計測部213は、ホスト2から受付た書き込みデータ部の数を、NSID#1のネームスペースの累積無効データ数から減算する。ライト制御部22は、ライトバッファ31−1に書き込まれたデータを、例えばページ単位で、NSID#1のネームスペースにおけるホスト2の書き込み先ブロック511−1に書き込む。
なお、ライト制御部22は、NSID#1のネームスペースにおけるホスト2の書き込み先ブロック511−1がまだ割り当てられていない場合、割り当てられている書き込み先ブロック511−1の終端までデータが書き込まれた場合、又は書き込み先ブロック511−1にエラーが発生した場合には、フリーブロックプール51内の一つのフリーブロックを、新たな書き込み先ブロック511−1として割り当てる。また、ライト制御部22は、割り当てられている書き込み先ブロック511−1の終端までデータが書き込まれた場合、その書き込み先ブロック511−1をアクティブブロックプール55−1に移動する。
累積無効データ数計測部213は、ホスト2の書き込み先ブロック511−1が新たに割り当てられた時、NSID#1のネームスペース用に割り当て可能な残りブロック数が閾値以上であるか否かを判定する。この残りブロック数は、NSID#1のネームスペース用に確保(予約された)された総ブロック数から、NSID#1のネームスペースにおいて使用されているブロックの数を示す使用ブロック数を減算することによって得られる。この残りブロック数が閾値以上である場合、累積無効データ数計測部213は、NSID#1のネームスペースの累積無効データ数に、新たに割り当てられた書き込み先ブロック511−1に書き込み可能なデータ部の数を加算する。書き込み先ブロック511−1に書き込み可能なデータ部の数は、このブロックの容量に相当するデータ部の数である。さらに、累積無効データ数計測部213は、ライトバッファ31−1に現在蓄積されているデータ部がある場合には、NSID#1のネームスペースの累積無効データ数からそのデータ部の数を減算するようにしてもよい。また、NSID#1のネームスペース用に割り当て可能な残りブロック数が閾値未満である場合、累積無効データ数計測部213は、NSID#1のネームスペースの累積無効データ数に0を設定する。さらに、累積無効データ数計測部213は、ライトバッファ31−1に現在蓄積されているデータ部がある場合には、NSID#1のネームスペースの累積無効データ数からそのデータ部の数を減算するようにしてもよい。
同様にして、NSID#nのネームスペースにおけるガベージコレクション動作と、ホスト2からのNSID#nのネームスペースへの書き込み要求に応じた書き込み動作とが行われる。
図9及び図10のフローチャートを参照して、複数のネームスペースのための複数の領域が設定されたSSD3によって実行される書き込み処理の手順の例を説明する。以下では、説明を分かりやすくするために、複数のネームスペースの内の、ある一つのネームスペースへの書き込み処理について説明するが、コントローラ4は、複数のネームスペースの各々について同様の書き込み処理を並行して実行することができる。
図9のフローチャートに示すように、まず、SSD3のコントローラ4は、ホスト2からあるネームスペースへの書き込み先ブロックにエラーが発生している状態、書き込み位置が書き込み先ブロックの終端である状態、及び書き込み先ブロックがまだ割り当てられていない状態のいずれかであるかどうかを判定する(ステップS401)。これら3つの状態のいずれかである場合(ステップS401のYES)、コントローラ4は、ホスト2からそのネームスペースへの書き込み先ブロックの割り当て処理を実行する(ステップS402)。
このステップS402のホスト書き込み先ブロック割り当て処理の手順について、図10を参照して例示する。まず、コントローラ4は、フリーブロック群51に含まれるフリーブロックを、ホスト2のネームスペースへの書き込み先ブロックとして割り当てる(ステップS51)。そして、コントローラ4は、そのネームスペース用に確保された総ブロック数から、当該ネームスペースにおいて使用されているブロックの数を示す使用ブロック数を減算することによって得られる残りブロックの数が閾値以上であるか否かを判定する(ステップS52)。この閾値は、例えば1以上の値である。残りブロック数が閾値以上である場合(ステップS52のYES)、コントローラ4は、ネームスペースの累積無効データ数に、一つのブロックに相当するデータ数であるブロックサイズから、ライトバッファ31に蓄積されたデータ数を減算した値(すなわち、ブロックサイズ−蓄積データ数)を設定する(ステップS53)。そして、コントローラ4は、ネームスペースの不足ブロック数に1を設定する(ステップS54)。
一方、フリーブロック群51に含まれる残りのフリーブロックの数が閾値未満である場合(ステップS52のNO)、コントローラ4は、ネームスペースの累積無効データ数に、ライトバッファ31に蓄積されたデータ数に相当する負の値(すなわち、−蓄積データ数)を設定する(ステップS55)。そして、コントローラ4は、ネームスペースの不足ブロック数を算出する(ステップS56)。コントローラ4は、例えば、使用できない不良ブロック(バッドブロック)の数と、ホスト2による書き込みのために次に使用されるブロックの分とを考慮して、不足ブロック数として、不良ブロックの数に1を加えた値を算出する。例えば、一つの不良ブロックが新たに発生したならば不足ブロックの数は2に設定され、二つの不良ブロックが新たに同時発生したならば不足ブロックの数は3に設定される。
図9のフローチャートに示すように、ステップS402のホスト書き込み先ブロック割り当て処理の手順が完了した後、あるいはあるネームスペースにおけるホスト2の書き込み先ブロックにエラーが発生している状態、書き込み位置が書き込み先ブロックの終端である状態、及び書き込み先ブロックがまだ割り当てられていない状態のいずれでもない場合(ステップS401のNO)、コントローラ4は、ホスト2からそのネームスペースへの書き込みデータが閾値以上蓄積されているか否かを判定する(ステップS403)。この書き込みデータは、例えば、ライトバッファ31に格納されているデータである。書き込みデータが閾値以上蓄積されている場合、つまり閾値以上の数の書き込みデータ部がライトバッファ31に蓄積されている場合(ステップS403のYES)、コントローラ4は、蓄積されているデータを、そのネームスペースにおけるホスト2の書き込み先ブロックに書き込む(ステップS404)。コントローラ4は、例えば、書き込み先ブロックに対して、ページ単位でデータを書き込む。そして、コントローラ4は、書き込みのエラーが発生したか否かを判定する(ステップS405)。書き込みのエラーが発生した場合(ステップS405のYES)、コントローラ4は、ホスト2の書き込み先ブロックの割り当て処理を実行する(ステップS402)。このホスト書き込み先ブロック割り当て処理の手順は図10を参照して上述した通りである。
書き込みのエラーが発生していない場合(ステップS405のNO)、コントローラ4は書き込まれたデータに応じて、ネームスペースのLUT33を更新し(ステップS406)、ステップS407の手順に進む。コントローラ4は、ネームスペースのLUT33を更新することによって、そのネームスペースの領域に書き込まれたデータに対応するLBAそれぞれとNANDメモリ5上の物理アドレスそれぞれとをマッピングする。
また、書き込みデータが閾値以上蓄積されていない場合(ステップS403のNO)、ライトバッファ31に蓄積されているデータを書き込むための処理は行われず、ステップS407の手順に進む。
ステップS407の手順において、コントローラ4は、ネームスペースの累積無効データ数が1以上であるか否かを判定する。ネームスペースの累積無効データ数が1以上でない場合(ステップS407のNO)、コントローラ4は書き込み処理から抜け、ガベージコレクション処理を実行する。このガベージコレクション処理の手順については、図11を参照して後述する。
ネームスペースの累積無効データ数が1以上である場合(ステップS407のYES)、コントローラ4は、ネームスペースの累積無効データ数を不足ブロック数で除した値まで、ホスト2からのデータの受付を許可する(ステップS408)。なお、累積無効データ数を不足ブロック数で除した値の小数点以下の値は切り捨てとする。次いで、コントローラ4は、そのネームスペースに対する、受付許可の範囲内のデータ数(又はデータ量)が指定された、ホスト2からの書き込み要求(ライトコマンド)があるかどうかを判定する(ステップS409)。
そのネームスペースに対する、受付許可の範囲内のデータ数(又はデータ量)が指定された書き込み要求がない場合(ステップS409のNO)、コントローラ4は、書き込み処理から抜け、ガベージコレクション処理を実行する。したがって、例えば、ホスト2が書き込み要求を発行しないホストアイドル状態の場合であっても、ガベージコレクション処理が進行される。
そのネームスペースに対する、受付許可の範囲内のデータ数(又はデータ量)が指定された、ホスト2からの書き込み要求がある場合(ステップS409のYES)、コントローラ4は、そのホスト2からの書き込み要求に応答し、ホスト2から当該ネームスペースに対する書き込みデータを受信する(ステップS410)。受信した書き込みデータは、ネームスペース毎のライトバッファ31に一時的に書き込まれる。コントローラ4は、ネームスペースの累積無効データ数から、受信した書き込みデータ数に不足ブロック数を乗じた値を減算する(ステップS411)。そして、コントローラ4は、ライトバッファ31に一時的に書き込まれたデータに応じて、ネームスペースのLUT33を更新し(ステップS412)、ステップS407の手順に進む。コントローラ4は、ネームスペースのLUT33を更新することによって、ライトバッファ31に一時的に書き込まれたデータに対応するLBAそれぞれとライトバッファ31(すなわち、DRAM6)上の物理アドレスそれぞれとをマッピングする。
次いで、図11を参照して、SSD3によって実行されるガベージコレクション処理の手順の例を説明する。
まず、SSD3のコントローラ4は、ネームスペース用に確保された総ブロック数から、当該ネームスペースにおいて使用されているブロックの数を示す使用ブロック数を減算することによって得られる残りブロックの数が閾値以上であるか否かを判定する(ステップS601)。この閾値は、例えば1以上の値である。残りブロック数が閾値以上である場合(ステップS601のYES)、コントローラ4はガベージコレクション処理を終了し、上述した書き込み処理を実行する。残りブロック数が閾値以上である場合には、ガベージコレクション処理が実行されないことによって、ガベージコレクション処理が過剰に行われることを抑制することができる。
残りブロック数が閾値未満である場合(ステップS601のNO)、コントローラ4は、未コピーの有効データが残っている、そのネームスペースのガベージコレクションの対象ブロックがあるかどうかを判定する(ステップS602)。未コピーの有効データが残っている、そのネームスペースのガベージコレクションの対象ブロックがない場合(ステップS602のNO)、コントローラ4は、当該ネームスペースにおける、新たなガベージコレクションの対象ブロックを選定する(ステップS603)。未コピーの有効データが残っている、そのネームスペースのガベージコレクションの対象ブロックがある場合(ステップS602のYES)、ステップS603の手順がスキップされる。
次いで、コントローラ4は、ガベージコレクションの対象ブロックから未処理のデータを1個選択する(ステップS604)。データの選択は、管理サイズ(例えば4KB)と同じサイズを有する最小データ単位で実行される。コントローラ4は、選択された未処理のデータ部が有効データまたは無効データのいずれであるかを判定する(ステップS605)。選択された未処理のデータ部が有効データでない場合、すなわち、無効データである場合(ステップS605のNO)、コントローラ4は、そのネームスペースの累積無効データ数に1を加算する(ステップS606)。
一方、選択された未処理のデータ部が有効データである場合(ステップS605のYES)、コントローラ4は、そのデータ部をコピー用データとして蓄積する(ステップS607)。コントローラ4は、そのデータ部を、例えばコピーバッファ32に一時的に書き込む。そして、コントローラ4は、そのネームスペースについて、蓄積されたコピー用データ部の数が1ページ分以上であるか否かを判定する(ステップS608)。蓄積されたコピー用データの数が1ページ分未満である場合(ステップS608のNO)、ステップS602の手順に戻る。
蓄積されたコピー用データ部の数が1ページ分以上である場合(ステップS608のYES)、コントローラ4は、そのネームスペースにおけるガベージコレクションのコピー先ブロックが割り当てられているかどうかを判定する(ステップS609)。ガベージコレクションのコピー先ブロックが割り当てられていない場合(ステップS609のNO)、コントローラ4は、フリーブロック群51の一つのフリーブロックを、当該ネームスペースにおけるガベージコレクションのコピー先ブロックとして割り当てる(ステップS610)。ガベージコレクションのコピー先ブロックが既に割り当てられている場合(ステップS609のYES)、ステップS610の手順がスキップされる。
コントローラ4は、そのネームスペースのガベージコレクションのコピー先ブロックに、蓄積されたコピー用データの内、1ページ分のデータをコピーする(ステップS611)。そして、コントローラ4は、ネームスペースの、コピーされたデータに対応するLUT33を更新する(ステップS612)。コントローラ4は、ネームスペースのLUT33を更新することによって、当該ネームスペースにおいて、コピーされたデータに対応するLBAそれぞれとコピー先ブロック上の物理アドレスそれぞれとをマッピングする。
次いで、コントローラ4は、ガベージコレクションの対象ブロック内の、全ての有効データに対応するLUT33の更新が終了したかどうかを判定する(ステップS613)。全ての有効データに対応するLUT33の更新が終了していない場合(ステップS613のNO)、コントローラ4は書き込み処理を開始する。全ての有効データに対応するLUT33の更新が終了した場合(ステップS613のYES)、コントローラ4は、コピーが終了したガベージコレクションの対象ブロックをフリーブロックにし(ステップS614)、書き込み処理を開始する。
以上のように、SSD3に複数のネームスペースのための複数の領域が設定される場合にも、各ネームスペースにおいて、ガベージコレクション動作中に発見される無効データの数をカウントするという簡単な制御のみで、ホスト書き込みとガベージコレクション動作とを同期して進行させることができ、これによってライトレイテンシーの変動を減少させることができる。
また、図12は、SSD3がマルチネームスペース機能を有する場合のデータ書き込み動作とガベージコレクション動作の別の例を示す。複数のネームスペースの各々では、図8を参照して上述したようなガベージコレクション動作が行われる。それにより、ネームスペース毎の累積無効データ数が算出される。
図12に示す例では、ライト制御部22は、複数のネームスペースの累積無効データ数の合計を算出し、算出された合計の範囲内でホスト2からの書き込みデータ部の受付を許可する。つまり、ライト制御部22は、書き込みデータ部を、複数のネームスペースの累積無効データ数の合計を上限とする数だけホスト2から受付けることができる。ライト制御部22は、ホスト2から、受付た書き込みデータそれぞれをライトバッファ31に一時的に書き込む。また、累積無効データ数計測部213は、ホスト2から受付たデータ部の数を、累積無効データ数の合計から減算してもよい。ライト制御部22は、ライトバッファ31に書き込まれたデータを、例えばページ単位で、その書き込み要求で指定されたネームスペースにおけるホスト2の書き込み先ブロック511−1、511−nに書き込む。
なお、ライト制御部22は、メモリシステムで不足しているフリーブロックの数が2つ以上である場合、複数の累積無効データ数の合計を、その不足しているフリーブロックの数で除した値の範囲内でホスト2からの書き込みデータ部の受付を許可するようにしても良い。
図13は、ホスト2として機能する情報処理装置のハードウェア構成例を示す。
この情報処理装置は、サーバコンピュータ、またはパーソナルコンピュータとして実現される。この情報処理装置は、プロセッサ(CPU)101、メインメモリ102、BIOS−ROM103、ネットワークコントローラ105、周辺インタフェースコントローラ106、コントローラ107、及びエンベデッドコントローラ(EC)108等を含む。
プロセッサ101は、この情報処理装置の各コンポーネントの動作を制御するように構成されたCPUである。このプロセッサ101は、複数のSSD3のいずれか一つからメインメモリ102にロードされる様々なプログラムを実行する。メインメモリ102は、DRAMのようなランダムアクセスメモリから構成される。プロセッサ101によって実行されるプログラムは、上述のアプリケーションソフトウェアレイヤ41、OS42及びファイルシステム43を含む。
また、プロセッサ101は、不揮発性メモリであるBIOS−ROM103に格納された基本入出力システム(BIOS)も実行する。BIOSはハードウェア制御のためのシステムプログラムである。
ネットワークコントローラ105は、有線LANコントローラ、無線LANコントローラのような通信デバイスである。周辺インタフェースコントローラ106は、USBデバイスのような周辺デバイスとの通信を実行するように構成されている。
コントローラ107は、複数のコネクタ107Aにそれぞれ接続されるデバイスとの通信を実行するように構成されている。本実施形態では、複数のSSD3が複数のコネクタ107Aにそれぞれ接続される。コントローラ107は、SAS expander、PCIe Switch、PCIe expander、フラッシュアレイコントローラ、またはRAIDコントローラ等である。
EC108は、情報処理装置の電力管理を実行するように構成されたシステムコントローラとして機能する。EC108は、ユーザによる電源スイッチの操作に応じて情報処理装置をパワーオン及びパワーオフする。EC108はワンチップマイクロコントローラのような処理回路として実現されている。EC108は、キーボード(KB)などの入力デバイスを制御するキーボードコントローラを内蔵していてもよい。
図14は、複数のSSD3とホスト2とを含む情報処理装置の構成例を示す。
この情報処理装置は、ラックに収容可能な薄い箱形の筐体201を備える。多数のSSD3は筐体201内に配置されても良い。この場合、各SSD3は筐体201の前面201Aに設けられたスロットに取り外し可能に挿入されてもよい。
システムボード(マザーボード)202は筐体201内に配置される。システムボード(マザーボード)202上においては、CPU101、メモリ102、ネットワークコントローラ105、コントローラ107を含む様々な電子部品が実装されている。これら電子部品がホスト2として機能する。
以上のように、本実施形態においては、ライトレイテンシーの変動を低減することができる。本実施形態のメモリシステムは、NANDメモリ(不揮発性メモリ)5と、NANDメモリ5に電気的に接続されたコントローラ4とを備える。コントローラ4は、NANDメモリ5からガベージコレクションの対象ブロックとして選択されたGC対象ブロック551内のデータ部を順に選択し、その選択されたデータ部が有効データであるならば、当該データ部を、NANDメモリ5内のフリーブロック群51からガベージコレクションのためのコピー先ブロックとして割り当てられたGCコピー先ブロック512にコピーし、その選択されたデータ部が無効データであるならば、ガベージコレクション動作中に見つけられた無効データ部の数を示す累積無効データ数に1を加算するガベージコレクション動作を実行する。そして、コントローラ4は、累積無効データ数の範囲内でホスト2からの書き込みデータ部の受付を許可し、且つ受付た書き込みデータ部の数だけ累積無効データ数を減少させる。
したがって、ガベージコレクション動作中に発見される無効データの数をカウントするという簡単な制御のみで、ホスト書き込みとガベージコレクション動作とを同期して進行させることができ、これによってライトレイテンシーの変動を減少させることができる。
なお、本実施形態では、不揮発性メモリとしてNANDメモリを例示した。しかし、本実施形態の機能は、例えば、MRAM(Magnetoresistive Random Access Memory)、PRAM(Phase change Random Access Memory)、ReRAM(Resistive Random Access Memory)、又は、FeRAM(Ferroelectric Random Access Memory)のような他の様々な不揮発性メモリにも適用できる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1…情報処理システム、2…ホスト計算機、3…SSD、4…コントローラ、5…NANDメモリ、6…DRAM、11…ホストインターフェース(I/F)、12…CPU、13…NANDインターフェース(I/F)、14…DRAMインターフェース(I/F)、21…ガベージコレクション制御部、211…ブロック選択部、212…データコピー制御部、213…累積無効データ数計測部、22…ライト制御部、23…リード制御部、24…ネームスペース管理部、31…ライトバッファ、32…GCバッファ、33…ルックアップテーブル(LUT)、34…無効データ数、51…フリーブロック群、55…アクティブブロック群。

Claims (14)

  1. 不揮発性メモリと、
    前記不揮発性メモリに電気的に接続されたコントローラであって、
    前記不揮発性メモリからガベージコレクションの対象ブロックとして選択された第1ブロック内のデータ部を順に選択し、前記選択されたデータ部が有効データであるならば、当該データ部を、前記不揮発性メモリ内のフリーブロック群から前記ガベージコレクションのためのコピー先ブロックとして割り当てられた第2ブロックにコピーし、前記選択されたデータ部が無効データであるならば、ガベージコレクション動作中に見つけられた無効データ部の数を示す累積無効データ数に1を加算するガベージコレクション動作を実行し、
    前記累積無効データ数の範囲内でホストからの書き込みデータ部の受付を許可し、且つ受付た書き込みデータ部の数だけ前記累積無効データ数を減少させるように構成されるコントローラとを具備するメモリシステム。
  2. 前記コントローラは、さらに、アドレス変換テーブルを使用して論理ブロックアドレスそれぞれと前記不揮発性メモリの物理アドレスそれぞれとの間のマッピングを管理サイズ単位で管理し、前記累積無効データ数は、前記管理サイズ単位で無効データ部の数を示す請求項1記載のメモリシステム。
  3. 前記コントローラは、さらに、前記フリーブロック群から、前記ホストからの書き込みデータ部それぞれを書き込むための書き込み先ブロックを割り当て、前記書き込み先ブロックが割り当てられた時、前記フリーブロック群に含まれるフリーブロックの数が閾値以上であるならば、前記累積無効データ数に、前記書き込み先ブロックに書き込み可能なデータ部の数を加算するように構成される請求項1記載のメモリシステム。
  4. 前記コントローラは、さらに、前記フリーブロック群に含まれるフリーブロックの数が閾値以上である場合、前記ガベージコレクション動作を実行せず、前記フリーブロック群に含まれるフリーブロックの数が前記閾値未満である場合、前記ガベージコレクション動作を実行するように構成される請求項1記載のメモリシステム。
  5. 前記コントローラは、さらに、前記ガベージコレクションの対象ブロックに対する前記ガベージコレクション動作の実行が完了した場合、前記対象ブロックを前記フリーブロック群に返却するように構成される請求項1記載のメモリシステム。
  6. 前記コントローラは、さらに、
    前記不揮発性メモリを、第1ネームスペースに関連付けられた書き込みデータ部それぞれを書き込むための第1領域と第2ネームスペースに関連付けられた書き込みデータ部それぞれを書き込むための第2領域とに論理的に分割し、
    前記第1領域のガベージコレクションのための第1ガベージコレクション動作であって、前記第1領域に割り当てられた前記前記不揮発性メモリ内のブロック群から前記第1領域のガベージコレクションの対象ブロックとして選択された第3ブロック内のデータ部を順に選択し、前記選択されたデータ部が有効データであるならば、当該データ部を、前記フリーブロック群から前記第1領域のガベージコレクションのためのコピー先ブロックとして割り当てられた第4ブロックにコピーし、前記選択されたデータ部が無効データであるならば、前記第1ガベージコレクション動作中に見つけられた無効データ部の数を示す第1累積無効データ数に1を加算する第1ガベージコレクション動作を実行し、
    前記第2領域のガベージコレクションのための第2ガベージコレクション動作であって、前記第2領域に割り当てられた前記前記不揮発性メモリ内のブロック群から前記第2領域のガベージコレクションの対象ブロックとして選択された第5ブロック内のデータ部を順に選択し、前記選択されたデータ部が有効データであるならば、当該データ部を、前記フリーブロック群から前記第2領域のガベージコレクションのためのコピー先ブロックとして割り当てられた第6ブロックにコピーし、前記選択されたデータ部が無効データであるならば、前記第2ガベージコレクション動作中に見つけられた無効データ部の数を示す第2累積無効データ数に1を加算する第2ガベージコレクション動作を実行し、
    前記第1累積無効データ数の範囲内で前記ホストからの前記第1ネームスペースに関連付けられた書き込みデータ部の受付を許可し、且つ受付た書き込みデータ部の数だけ前記第1累積無効データ数を減少させ、
    前記第2累積無効データ数の範囲内で前記ホストからの前記第2ネームスペースに関連付けられた書き込みデータ部の受付を許可し、且つ受付た書き込みデータ部の数だけ前記第2累積無効データ数を減少させるように構成される請求項1記載のメモリシステム。
  7. 前記コントローラは、さらに、
    前記不揮発性メモリを、第1ネームスペースに関連付けられた書き込みデータ部それぞれが書き込まれる第1領域と第2ネームスペースに関連付けられた書き込みデータ部それぞれが書き込まれる第2領域とに論理的に分割し、
    前記第1領域のガベージコレクションのための第1ガベージコレクション動作であって、前記第1領域に割り当てられた前記前記不揮発性メモリ内のブロック群から前記第1領域のガベージコレクションの対象ブロックとして選択された第3ブロック内のデータ部を順に選択し、前記選択されたデータ部が有効データであるならば、当該データ部を、前記フリーブロック群から前記第1領域のガベージコレクションのためのコピー先ブロックとして割り当てられた第4ブロックにコピーし、前記選択されたデータ部が無効データであるならば、前記第1ガベージコレクション動作中に見つけられた無効データ部の数を示す第1累積無効データ数に1を加算する第1ガベージコレクション動作を実行し、
    前記第2領域のガベージコレクションのための第2ガベージコレクション動作であって、前記第2領域に割り当てられた前記前記不揮発性メモリ内のブロック群から前記第2領域のガベージコレクションの対象ブロックとして選択された第5ブロック内のデータ部を順に選択し、前記選択されたデータ部が有効データであるならば、当該データ部を、前記フリーブロック群から前記第2領域のガベージコレクションのためのコピー先ブロックとして割り当てられた第6ブロックにコピーし、前記選択されたデータ部が無効データであるならば、前記第2ガベージコレクション動作中に見つけられた無効データ部の数を示す第2累積無効データ数に1を加算する第2ガベージコレクション動作を実行し、
    前記第1累積無効データ数と前記第2累積無効データ数との合計の範囲内で前記ホストからの書き込みデータ部の受付を許可するように構成される請求項1記載のメモリシステム。
  8. 前記コントローラは、さらに、前記メモリシステムで不足しているフリーブロックの数が2つ以上である場合、前記第1累積無効データ数と前記第2累積無効データ数との合計を、前記メモリシステムで不足しているフリーブロックの数で除した値の範囲内で前記ホストからの書き込みデータ部の受付を許可するように構成される請求項7記載のメモリシステム。
  9. 不揮発性メモリと、
    前記不揮発性メモリに電気的に接続されたコントローラであって、
    前記不揮発性メモリを、第1ネームスペースに関連付けられた書き込みデータ部それぞれを書き込むための第1領域と第2ネームスペースに関連付けられた書き込みデータ部それぞれを書き込むための第2領域とに論理的に分割し、
    前記第1領域のガベージコレクションのための第1ガベージコレクション動作であって、前記第1領域に割り当てられた前記前記不揮発性メモリ内のブロック群から前記第1領域のガベージコレクションの対象ブロックとして選択された第1ブロック内のデータ部を順に選択し、前記選択されたデータ部が有効データであるならば、当該データ部を、前記不揮発性メモリ内のフリーブロック群から前記第1領域のガベージコレクションのためのコピー先ブロックとして割り当てられた第2ブロックにコピーし、前記選択されたデータ部が無効データであるならば、前記第1ガベージコレクション動作中に見つけられた無効データ部の数を示す第1累積無効データ数に1を加算する第1ガベージコレクション動作を実行し、
    前記第2領域のガベージコレクションのための第2ガベージコレクション動作であって、前記第2領域に割り当てられた前記前記不揮発性メモリ内のブロック群から前記第2領域のガベージコレクションの対象ブロックとして選択された第3ブロック内のデータ部を順に選択し、前記選択されたデータ部が有効データであるならば、当該データ部を、前記フリーブロック群から前記第2領域のガベージコレクションのためのコピー先ブロックとして割り当てられた第4ブロックにコピーし、前記選択されたデータ部が無効データであるならば、前記第2ガベージコレクション動作中に見つけられた無効データ部の数を示す第2累積無効データ数に1を加算する第2ガベージコレクション動作を実行し、
    前記第1累積無効データ数の範囲内でホストからの前記第1ネームスペースに関連付けられた書き込みデータ部の受付を許可し、且つ受付た書き込みデータ部の数だけ前記第1累積無効データ数を減少させ、
    前記第2累積無効データ数の範囲内で前記ホストからの前記第2ネームスペースに関連付けられた書き込みデータ部の受付を許可し、且つ受付た書き込みデータ部の数だけ前記第2累積無効データ数を減少させるように構成されるコントローラとを具備するメモリシステム。
  10. 前記コントローラは、さらに、
    前記フリーブロック群から、前記第1ネームスペースに関連付けられた書き込みデータ部それぞれを書き込むための書き込み先ブロックを前記第1領域に割り当て、前記書き込み先ブロックが割り当てられた時、前記フリーブロック群に含まれるフリーブロックの数が閾値以上であるならば、前記第1累積無効データ数に、前記書き込み先ブロックに書き込み可能なデータ部の数を加算し、
    前記フリーブロック群から、前記第2ネームスペースに関連付けられた書き込みデータ部それぞれを書き込むための書き込み先ブロックを前記第2領域に割り当て、前記書き込み先ブロックが割り当てられた時、前記フリーブロック群に含まれるフリーブロックの数が閾値以上であるならば、前記第2累積無効データ数に、前記書き込み先ブロックに書き込み可能なデータ部の数を加算するように構成される請求項9記載のメモリシステム。
  11. 前記コントローラは、さらに、第1アドレス変換テーブルを使用して前記第1ネームスペースの論理ブロックアドレスそれぞれと前記第1領域の物理アドレスそれぞれとの間のマッピングを管理サイズ単位で管理し、第2アドレス変換テーブルを使用して前記第2ネームスペースの論理ブロックアドレスそれぞれと前記第2領域の物理アドレスそれぞれとの間のマッピングを前記管理サイズ単位で管理し、
    前記第1累積無効データ数および前記第1累積無効データ数は、前記管理サイズ単位で無効データ部の数を示す請求項9記載のメモリシステム。
  12. 不揮発性メモリを含むメモリシステムの制御方法であって、
    前記不揮発性メモリからガベージコレクションの対象ブロックとして選択された第1ブロック内のデータ部を順に選択し、前記選択されたデータ部が有効データであるならば、当該データ部を、前記不揮発性メモリ内のフリーブロック群から前記ガベージコレクションのためのコピー先ブロックとして割り当てられた第2ブロックにコピーし、前記選択されたデータ部が無効データであるならば、前記ガベージコレクション動作中に見つけられた無効データ部の数を示す累積無効データ数に1を加算するガベージコレクション動作を実行することと、
    前記累積無効データ数の範囲内でホストからの書き込みデータ部の受付を許可し、且つ受付た書き込みデータ部の数だけ前記累積無効データ数を減少させることとを具備する制御方法。
  13. 前記フリーブロック群から、前記ホストからの書き込みデータ部それぞれを書き込むための書き込み先ブロックを割り当てることと、
    前記書き込み先ブロックが割り当てられた時、前記フリーブロック群に含まれるフリーブロックの数が閾値以上であるならば、前記累積無効データ数に、前記書き込み先第2ブロックに書き込み可能なデータ部の数に相当するデータ数を加算することとをさらに具備する請求項12記載の制御方法。
  14. アドレス変換テーブルを使用して論理ブロックアドレスそれぞれと前記不揮発性メモリの物理アドレスそれぞれとの間のマッピングを管理サイズ単位で管理することをさらに具備し、前記累積無効データ数は、前記管理サイズ単位で無効データ部の数を示す請求項12記載の制御方法。
JP2016185477A 2016-09-23 2016-09-23 メモリシステム及び制御方法 Active JP6524039B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2016185477A JP6524039B2 (ja) 2016-09-23 2016-09-23 メモリシステム及び制御方法
US15/441,068 US10761733B2 (en) 2016-09-23 2017-02-23 Storage device that writes data from a host during garbage collection
US16/940,269 US11474702B2 (en) 2016-09-23 2020-07-27 Storage device that writes data from a host during garbage collection
US17/942,388 US12019872B2 (en) 2016-09-23 2022-09-12 Storage device that writes data from a host during garbage collection

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016185477A JP6524039B2 (ja) 2016-09-23 2016-09-23 メモリシステム及び制御方法

Publications (2)

Publication Number Publication Date
JP2018049522A JP2018049522A (ja) 2018-03-29
JP6524039B2 true JP6524039B2 (ja) 2019-06-05

Family

ID=61685374

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016185477A Active JP6524039B2 (ja) 2016-09-23 2016-09-23 メモリシステム及び制御方法

Country Status (2)

Country Link
US (3) US10761733B2 (ja)
JP (1) JP6524039B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11886727B2 (en) 2021-06-21 2024-01-30 Kioxia Corporation Memory system and method for controlling nonvolatile memory

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6524039B2 (ja) * 2016-09-23 2019-06-05 東芝メモリ株式会社 メモリシステム及び制御方法
JP6765321B2 (ja) 2017-02-28 2020-10-07 キオクシア株式会社 メモリシステムおよび制御方法
TWI653533B (zh) * 2017-03-07 2019-03-11 慧榮科技股份有限公司 資料儲存裝置以及其操作方法
US10642488B2 (en) 2017-10-23 2020-05-05 Micron Technology, Inc. Namespace size adjustment in non-volatile memory devices
US10437476B2 (en) 2017-10-23 2019-10-08 Micron Technology, Inc. Namespaces allocation in non-volatile memory devices
US10503404B2 (en) 2017-10-23 2019-12-10 Micron Technology, Inc. Namespace management in non-volatile memory devices
US11580034B2 (en) 2017-11-16 2023-02-14 Micron Technology, Inc. Namespace encryption in non-volatile memory devices
US10678703B2 (en) 2017-11-16 2020-06-09 Micron Technology, Inc. Namespace mapping structual adjustment in non-volatile memory devices
US10223254B1 (en) * 2017-11-16 2019-03-05 Micron Technology, Inc. Namespace change propagation in non-volatile memory devices
US10915440B2 (en) 2017-11-16 2021-02-09 Micron Technology, Inc. Namespace mapping optimization in non-volatile memory devices
KR102503177B1 (ko) * 2018-03-05 2023-02-24 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
US20190286569A1 (en) * 2018-03-19 2019-09-19 Seagate Technology Llc Logical to physical data storage mapping
KR102620255B1 (ko) * 2018-05-18 2024-01-04 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
GB201814918D0 (en) * 2018-09-13 2018-10-31 Blancco Tech Group Ip Oy Method and apparatus for use in sanitizing a network of non-volatile memory express devices
KR20200078046A (ko) * 2018-12-21 2020-07-01 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
US10915444B2 (en) * 2018-12-27 2021-02-09 Micron Technology, Inc. Garbage collection candidate selection using block overwrite rate
KR20200085513A (ko) 2019-01-07 2020-07-15 에스케이하이닉스 주식회사 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템
US12019886B2 (en) * 2019-08-20 2024-06-25 Sony Interactive Entertainment Inc. Storage management apparatus, storage management method, and program
US20210109855A1 (en) * 2019-10-15 2021-04-15 Microsoft Technology Licensing, Llc Managing garbage collection for a storage system
US11797433B2 (en) 2019-12-20 2023-10-24 Sk Hynix Nand Product Solutions Corp. Zoned namespace with zone grouping
JP7366795B2 (ja) 2020-02-14 2023-10-23 キオクシア株式会社 メモリシステムおよび制御方法
US11467777B1 (en) * 2020-10-12 2022-10-11 iodyne, LLC Method and system for storing data in portable storage devices
CN112558868B (zh) * 2020-12-07 2024-04-09 炬芯科技股份有限公司 一种配置数据存储的方法和装置及设备
CN112527208A (zh) * 2020-12-21 2021-03-19 江苏国科微电子有限公司 一种数据对拷方法、装置、系统及介质
TWI775268B (zh) * 2021-01-07 2022-08-21 慧榮科技股份有限公司 儲存裝置、快閃記憶體控制器及其控制方法
CN114415963B (zh) * 2021-12-03 2023-09-19 武汉深之度科技有限公司 一种硬盘数据清理方法、装置及计算设备

Family Cites Families (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5946708A (en) * 1997-01-24 1999-08-31 Integrated Memory Logic, Inc Automated cache manager for storage devices
US7499960B2 (en) * 2001-10-01 2009-03-03 Oracle International Corporation Adaptive memory allocation
KR100947159B1 (ko) * 2005-10-17 2010-03-12 가부시끼가이샤 르네사스 테크놀로지 반도체 장치
JP5221157B2 (ja) * 2008-02-04 2013-06-26 株式会社日立製作所 コンピュータシステム及び物理ディスク回収方法
US20090259786A1 (en) * 2008-04-10 2009-10-15 Chu-Ming Lin Data transfer system and method for host-slave interface with automatic status report
JP4358299B2 (ja) 2009-04-24 2009-11-04 株式会社東芝 メモリコントローラ及び半導体装置
US8463826B2 (en) * 2009-09-03 2013-06-11 Apple Inc. Incremental garbage collection for non-volatile memories
US8949515B2 (en) * 2009-12-03 2015-02-03 Hitachi, Ltd. Storage device and memory controller
US9183134B2 (en) * 2010-04-22 2015-11-10 Seagate Technology Llc Data segregation in a storage device
KR101800444B1 (ko) * 2011-03-28 2017-12-20 삼성전자주식회사 불휘발성 메모리의 제어 방법 및 그것을 포함하는 메모리 시스템
JP5581256B2 (ja) * 2011-03-28 2014-08-27 株式会社東芝 メモリシステム、コントローラ、およびメモリシステムの制御方法
US9158670B1 (en) * 2011-06-30 2015-10-13 Western Digital Technologies, Inc. System and method for dynamically adjusting garbage collection policies in solid-state memory
US20130019057A1 (en) * 2011-07-15 2013-01-17 Violin Memory, Inc. Flash disk array and controller
JP5677336B2 (ja) * 2011-08-01 2015-02-25 株式会社東芝 メモリ・デバイス
US9235502B2 (en) * 2011-09-16 2016-01-12 Apple Inc. Systems and methods for configuring non-volatile memory
US8762627B2 (en) * 2011-12-21 2014-06-24 Sandisk Technologies Inc. Memory logical defragmentation during garbage collection
US8832506B2 (en) * 2012-01-20 2014-09-09 International Business Machines Corporation Bit error rate based wear leveling for solid state drive memory
US8578112B2 (en) * 2012-02-23 2013-11-05 Hitachi, Ltd. Data management system and data management method
US9026887B2 (en) * 2012-03-15 2015-05-05 Micron Technology, Inc. Physical page, logical page, and codeword correspondence
US9218281B2 (en) * 2012-05-04 2015-12-22 Seagate Technology Llc Maintaining ordering via a multi-level map of a solid-state media
US8990484B2 (en) * 2012-12-14 2015-03-24 Virtium Technology, Inc Heap-based mechanism for efficient garbage collection block selection
US9703527B2 (en) * 2012-12-31 2017-07-11 Sandisk Technologies Llc Storage device and method for reallocating storage device resources based on an estimated fill level of a host buffer
US20160011782A1 (en) * 2013-02-27 2016-01-14 Hitachi, Ltd. Semiconductor storage
KR102094334B1 (ko) * 2013-03-15 2020-03-27 삼성전자주식회사 비휘발성 멀티-레벨 셀 메모리 시스템 및 상기 시스템에서의 적응적 데이터 백업 방법
US9069660B2 (en) * 2013-03-15 2015-06-30 Apple Inc. Systems and methods for writing to high-capacity memory
JP2015001909A (ja) * 2013-06-17 2015-01-05 富士通株式会社 情報処理装置、制御回路、制御プログラム、および制御方法
US9304906B2 (en) * 2013-09-10 2016-04-05 Kabushiki Kaisha Toshiba Memory system, controller and control method of memory
US9298608B2 (en) * 2013-10-18 2016-03-29 Sandisk Enterprise Ip Llc Biasing for wear leveling in storage systems
US9274866B2 (en) * 2013-12-09 2016-03-01 International Business Machines Corporation Programming non-volatile memory using a relaxed dwell time
US9564212B2 (en) * 2014-05-06 2017-02-07 Western Digital Technologies, Inc. Solid-state memory corruption mitigation
JP2016024678A (ja) * 2014-07-22 2016-02-08 株式会社東芝 メモリシステム
US9798657B2 (en) * 2014-10-15 2017-10-24 Samsung Electronics Co., Ltd. Data storage device including nonvolatile memory device and operating method thereof
KR20160064364A (ko) * 2014-11-27 2016-06-08 삼성전자주식회사 패스트 오픈을 위한 어드레스 맵 운영방법 및 그에 따른 메모리 시스템
US9977734B2 (en) * 2014-12-11 2018-05-22 Toshiba Memory Corporation Information processing device, non-transitory computer readable recording medium, and information processing system
US10409526B2 (en) * 2014-12-17 2019-09-10 Violin Systems Llc Adaptive garbage collection
JP2016122227A (ja) * 2014-12-24 2016-07-07 株式会社東芝 メモリシステムおよび情報処理システム
US9766819B2 (en) * 2014-12-30 2017-09-19 Sandisk Technologies Llc Systems and methods for managing storage endurance
KR102295223B1 (ko) * 2015-01-13 2021-09-01 삼성전자주식회사 속도 모드 관리자를 포함하는 저장 장치 및 사용자 장치
IN2015CH01601A (ja) * 2015-03-28 2015-05-01 Wipro Ltd
WO2016174744A1 (ja) * 2015-04-28 2016-11-03 株式会社日立製作所 不揮発性メモリの制御方法、制御装置、および半導体記憶装置
US10009438B2 (en) * 2015-05-20 2018-06-26 Sandisk Technologies Llc Transaction log acceleration
US20170024140A1 (en) * 2015-07-20 2017-01-26 Samsung Electronics Co., Ltd. Storage system and method for metadata management in non-volatile memory
US9940040B2 (en) * 2015-08-26 2018-04-10 Toshiba Memory Corporation Systems, solid-state mass storage devices, and methods for host-assisted garbage collection
KR102501751B1 (ko) * 2015-09-22 2023-02-20 삼성전자주식회사 메모리 콘트롤러, 불휘발성 메모리 시스템 및 그 동작방법
US10102119B2 (en) * 2015-10-30 2018-10-16 Sandisk Technologies Llc Garbage collection based on queued and/or selected write commands
KR20170060206A (ko) * 2015-11-23 2017-06-01 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
CN106802867B (zh) * 2015-11-25 2020-12-01 建兴储存科技(广州)有限公司 固态储存装置及其数据编程方法
US9996268B2 (en) * 2015-12-18 2018-06-12 Toshiba Memory Corporation Memory system and control method of the same
CN107092560B (zh) * 2016-02-17 2020-06-16 建兴储存科技(广州)有限公司 固态储存装置及运用于其中的快闪转换层对应表重建方法
US9921956B2 (en) * 2016-07-20 2018-03-20 Sandisk Technologies Llc System and method for tracking block level mapping overhead in a non-volatile memory
US10235396B2 (en) * 2016-08-29 2019-03-19 International Business Machines Corporation Workload optimized data deduplication using ghost fingerprints
JP6524039B2 (ja) * 2016-09-23 2019-06-05 東芝メモリ株式会社 メモリシステム及び制御方法
US10552288B2 (en) * 2016-12-12 2020-02-04 International Business Machines Corporation Health-aware garbage collection in a memory system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11886727B2 (en) 2021-06-21 2024-01-30 Kioxia Corporation Memory system and method for controlling nonvolatile memory

Also Published As

Publication number Publication date
US20200356271A1 (en) 2020-11-12
US20230004289A1 (en) 2023-01-05
JP2018049522A (ja) 2018-03-29
US11474702B2 (en) 2022-10-18
US12019872B2 (en) 2024-06-25
US20180088805A1 (en) 2018-03-29
US10761733B2 (en) 2020-09-01

Similar Documents

Publication Publication Date Title
JP6524039B2 (ja) メモリシステム及び制御方法
US11847350B2 (en) Storage system, information processing system and method for controlling nonvolatile memory
US20200218655A1 (en) Storage system and information processing system for controlling nonvolatile memory
JP6414852B2 (ja) メモリシステムおよび制御方法
TWI670596B (zh) 記憶體系統及控制非揮發性記憶體之控制方法
CN109240938B (zh) 存储系统以及控制非易失性存储器的控制方法
US10324834B2 (en) Storage device managing multi-namespace and method of operating the storage device
JP6414853B2 (ja) メモリシステムおよび制御方法
CN110781096B (zh) 用于通过预测需求时间来执行垃圾收集的设备和方法
JP6785204B2 (ja) メモリシステムおよび制御方法
US11747984B2 (en) Memory system that constructs virtual storage regions for virtual machines
JP2019057178A (ja) メモリシステムおよび制御方法
JP2018049523A (ja) メモリシステムおよび制御方法
JP2023012773A (ja) メモリシステムおよび制御方法
JP2018160189A (ja) メモリシステム
US10365857B2 (en) Memory system
JP2019212103A (ja) メモリシステム
JP6721765B2 (ja) メモリシステムおよび制御方法
JP6552701B2 (ja) メモリシステムおよび制御方法
JP6666405B2 (ja) メモリシステムおよび制御方法

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20180830

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20181005

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190312

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: 20190402

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190426

R150 Certificate of patent or registration of utility model

Ref document number: 6524039

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350