JP2021033945A - メモリシステムおよび制御方法 - Google Patents
メモリシステムおよび制御方法 Download PDFInfo
- Publication number
- JP2021033945A JP2021033945A JP2019157078A JP2019157078A JP2021033945A JP 2021033945 A JP2021033945 A JP 2021033945A JP 2019157078 A JP2019157078 A JP 2019157078A JP 2019157078 A JP2019157078 A JP 2019157078A JP 2021033945 A JP2021033945 A JP 2021033945A
- Authority
- JP
- Japan
- Prior art keywords
- block
- write
- data
- group
- host
- 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; 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
- 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; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- 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
- 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; CALCULATING OR 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/7209—Validity control, e.g. using flags, time stamps or sequence numbers
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)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
Abstract
【課題】ホストに有用な情報を提供することができるメモリシステムを実現する。【解決手段】メモリシステムは、有効データを格納し且つ第1のブロック群に属するブロックのうち、ライトデータで満たされてからの経過時間が対応する第1の期間を超えた第1のブロックを検出する。メモリシステムは、第1のブロックに格納されている有効データ部それぞれの識別子のリスト(または第1のブロックに格納されている全てのデータ部それぞれの識別子のリスト)をホスト2に通知する。第1のブロックに格納されている一つ以上の有効データ部をコピー対象データとして指定し且つ第2のブロック群をコピー先ブロック群として指定する第1のコピー要求をホスト2から受信した場合、メモリシステムは、コピー対象データとして指定された一つ以上の有効データ部を第1のブロックから第2のブロック群にコピーする。【選択図】図6
Description
本発明の実施形態は、不揮発性メモリを制御する技術に関する。
近年、不揮発性メモリを備えるメモリシステムが広く普及している。
このようなメモリシステムの一つとして、NANDフラッシュ技術をベースとするソリッドステートドライブ(SSD)が知られている。SSDは、様々なコンピュータのストレージとして使用されている。
最近では、ホストからの制御によってSSDの性能改善を図る試みがされ始めている。
SSDの性能を改善できるようにするためには、性能改善のための有用な情報をホストに提供するための新たな機能の実現が要求される。
本発明が解決しようとする課題は、ホストに有用な情報を提供することができるメモリシステムおよび制御方法を提供することである。
実施形態によれば、ホストに接続可能なメモリシステムは、複数のブロックを含む不揮発性メモリと、前記不揮発性メモリに電気的に接続され、ライトデータの推定されるライフタイムが属する期間を識別可能なライフタイム情報を含むライトコマンドを前記ホストから受信するように構成されたコントローラとを具備する。前記コントローラは、前記受信したライトコマンドの前記ライフタイム情報によって識別される前記期間が第1の期間である場合、前記第1の期間に対応する推定されるライフタイムを有するデータを格納するための第1のブロック群用に割り当てられた第1の書き込み先ブロックに前記ライトデータを書き込み、前記第1の書き込み先ブロックが前記ライトデータで満たされた場合、前記第1の書き込み先ブロックを、有効データ部を格納し且つ前記第1のブロック群に属するブロックとして管理すると共に、前記第1のブロック群用の新たな第1の書き込み先ブロックを割り当てる。前記コントローラは、前記受信したライトコマンドの前記ライフタイム情報によって識別される前記期間が前記第1の期間よりも長い第2の期間である場合、前記第2の期間に対応する推定されるライフタイムを有するデータを格納するための第2のブロック群用に割り当てられた第2の書き込み先ブロックに前記ライトデータを書き込み、前記第2の書き込み先ブロックが前記ライトデータで満たされた場合、前記第2の書き込み先ブロックを、有効データ部を格納し且つ前記第2のブロック群に属するブロックとして管理すると共に、前記第2のブロック群用の新たな第2の書き込み先ブロックを割り当てる。前記コントローラは、有効データ部を格納し且つ前記第1のブロック群に属するブロックのうち、前記ライトデータで満されてからの経過時間が前記第1の期間を超えた第1のブロックを検出する。前記コントローラは、前記第1のブロックに格納されている有効データ部それぞれを識別可能な識別子のリスト、または前記第1のブロックに格納されている全てのデータ部それぞれを識別可能な識別子のリストを前記ホストに通知する。前記コントローラは、前記第1のブロックに格納されている一つ以上の有効データ部をコピー対象データとして指定し且つ前記第2のブロック群をコピー先ブロック群として指定する第1のコピー要求を前記ホストから受信した場合、前記コピー対象データとして指定された前記一つ以上の有効データ部を前記第1のブロックから前記第2のブロック群にコピーする。
以下、図面を参照して、実施形態を説明する。
まず、図1を参照して、本実施形態に係るメモリシステムとホストとの関係を説明する。
まず、図1を参照して、本実施形態に係るメモリシステムとホストとの関係を説明する。
このメモリシステムは、不揮発性メモリにデータを書き込み、不揮発性メモリからデータを読み出すように構成された半導体ストレージデバイスである。このメモリシステムは、NANDフラッシュ技術ベースのフラッシュストレージデバイス3として実現されている。
ホスト(ホストデバイス)2は、複数のフラッシュストレージデバイス3を制御するように構成されている。ホスト2は、複数のフラッシュストレージデバイス3によって構成されるフラッシュアレイをストレージとして使用するように構成された情報処理装置によって実現される。この情報処理装置はパーソナルコンピュータであってもよいし、サーバコンピュータであってもよい。
なお、フラッシュストレージデバイス3は、ストレージアレイ内に設けられる複数のストレージデバイスの一つとして利用されてもよい。ストレージアレイは、サーバコンピュータのような情報処理装置にケーブルまたはネットワークを介して接続されてもよい。ストレージアレイは、このストレージアレイ内の複数のストレージ(例えば複数のフラッシュストレージデバイス3)を制御するコントローラを含む。フラッシュストレージデバイス3がストレージアレイに適用された場合には、このストレージアレイのコントローラが、フラッシュストレージデバイス3のホストとして機能してもよい。
フラッシュストレージデバイス3は、フラッシュストレージデバイス3をアクセスするためにホスト2によって使用される論理アドレスそれぞれとフラッシュストレージデバイス3内の不揮発性メモリの物理アドレスそれぞれとの間のマッピングを、アドレス変換テーブルとして機能するルックアップテーブルを使用して管理するように構成された第1タイプストレージデバイスとして実現されていてもよい。論理アドレスとしては、論理ブロックアドレス(LBA)が使用される。
フラッシュストレージデバイス3が第1タイプストレージデバイスとして実現されている場合、フラッシュストレージデバイス3は、書き込み対象データの論理アドレスを指定するライト要求をホスト2から受信する。フラッシュストレージデバイス3は受信したライト要求に関連付けられたライトデータを書き込むべき不揮発性メモリの物理記憶位置(ブロック、ページ)を決定し、ライトデータをこの決定された物理記憶位置に書き込み、ルックアップテーブルを更新することによってこの論理アドレスに、ライトデータが書き込まれた物理記憶位置を示す物理アドレス(ブロックアドレス、ブロック内オフセット)を関連付ける。ブロック内オフセットは、あるページのページアドレスと、このページ内のオフセットとによって表現されてもよい。
フラッシュストレージデバイス3が第1タイプストレージデバイスとして実現されている場合、フラッシュストレージデバイス3は、また、読み出し対象データの論理アドレスと読み出し対象データの長さを指定するリード要求をホスト2から受信する。フラッシュストレージデバイス3は、ルックアップテーブルを参照することによって、リード要求によって指定された論理アドレスに対応するデータが格納されている不揮発性メモリの物理記憶位置を示す物理アドレスを取得する。フラッシュストレージデバイス3は、取得した物理アドレスに基づいて、リード要求によって指定された論理アドレスに対応するデータを不揮発性メモリから読み出す。
フラッシュストレージデバイス3は、ホスト2に物理アドレスを通知するように構成された第2タイプストレージデバイスとして実現されていてもよい。
フラッシュストレージデバイス3が第2タイプストレージデバイスとして実現されている場合、フラッシュストレージデバイス3においては、書き込み用のアドレス指定と読み出し用のアドレス指定とが互いに異なるアドレス指定方式が用いられてもよい。
このアドレス指定方式においては、ホスト2から受信されるリード要求は、読み出し対象データが格納されている不揮発性メモリ内の物理記憶位置を示す物理アドレス(ブロックアドレスとブロック内オフセットの双方)と読み出し対象データの長さを指定する。ブロックアドレスは、読み出し対象データが格納されている不揮発性メモリ内のブロックを示すブロックアドレスである。ブロック内オフセットは、読み出し対象データが格納されている、このブロック内の物理記憶位置を示す。一方、ホスト2から受信されるライト要求は、書き込み対象データの論理アドレスと、書き込み対象データの長さを指定してもよい。この場合、フラッシュストレージデバイス3は、書き込み先ブロックとこの書き込み先ブロック内の書き込み先位置の双方を決定する。そして、フラッシュストレージデバイス3は、書き込み対象データが書き込まれた不揮発性メモリの物理記憶位置を示す物理アドレス(ブロックアドレス、ブロック内オフセット)をホスト2に通知する。ホスト2は、ルックアップテーブルを更新して、書き込み対象データの論理アドレスに、SSD3によって通知された物理アドレスをマッピングする。
なお、フラッシュストレージデバイス3が第2タイプストレージデバイスとして実現されている場合、ホスト2から受信されるライト要求は、書き込み対象データの論理アドレスと、書き込み先ブロックのブロックアドレスと、書き込み対象データの長さを指定してもよい。この場合、フラッシュストレージデバイス3は、この書き込み先ブロック内の書き込み先位置だけを決定する。そして、フラッシュストレージデバイス3は、書き込み対象データが書き込まれた不揮発性メモリの物理記憶位置を示す物理アドレス(ブロックアドレス、ブロック内オフセット)をホスト2に通知する。ホスト2は、ルックアップテーブルを更新して、書き込み対象データの論理アドレスに、SSD3によって通知された物理アドレスをマッピングする。
なお、第1タイプストレージデバイスおよび第2タイプストレージデバイスの各々においては、書き込み/読み出し対象データの論理アドレスの代わりに、キー・バリュー・ストアのキーまたはこのキーのハッシュ値等が、書き込み/読み出し対象データを識別可能な識別子として使用されてもよい。
以下では、主として、フラッシュストレージデバイス3が第2タイプストレージデバイスとして実現されている場合を想定する。また、サーバコンピュータのような情報処理装置が、フラッシュストレージデバイス3に書き込み/読み出し要求(ライト/リードコマンド)それぞれを発行するためのホスト2として機能する場合を想定する。
ホスト(サーバ)2と複数のフラッシュストレージデバイス3は、インタフェース50を介して相互接続される(内部相互接続)。この相互接続のためのインタフェース50としては、これに限定されないが、PCI Express(PCIe)(登録商標)、NVM Express(NVMe)(登録商標)、Ethernet(登録商標)、NVMe over Fabrics(NVMeOF)等を使用し得る。
ホスト2として機能するサーバコンピュータの典型例としては、データセンター内のサーバコンピュータ(以下、サーバと称する)が挙げられる。
ホスト2がデータセンター内のサーバによって実現されるケースにおいては、このホスト(サーバ)2は、ネットワーク60を介して複数のエンドユーザ端末(クライアント)61に接続されてもよい。ホスト2は、これらエンドユーザ端末61に対して様々なサービスを提供することができる。
ホスト(サーバ)2によって提供可能なサービスの例には、(1)システム稼働プラットフォームを各クライアント(各エンドユーザ端末61)に提供するプラットホーム・アズ・ア・サービス(PaaS)、(2)仮想サーバのようなインフラストラクチャを各クライアント(各エンドユーザ端末61)に提供するインフラストラクチャ・アズ・ア・サービス(IaaS)、等がある。
複数の仮想マシンが、このホスト(サーバ)2として機能する物理サーバ上で実行されてもよい。ホスト(サーバ)2上で走るこれら仮想マシンの各々は、この仮想マシンに対応するクライアント(エンドユーザ端末61)に各種サービスを提供するように構成された仮想サーバとして機能することができる。各仮想マシンにおいては、この仮想マシンに対応するエンドユーザ端末61によって使用される、オペレーティングシステムおよびユーザアプリケーションが実行される。
ホスト(サーバ)2においては、フラッシュトランスレーションレイヤ(ホストFTL)が実行されてもよい。このホストFTLは、アクセス対象のデータを識別するための識別子(タグ)それぞれとフラッシュストレージデバイス3内の不揮発性メモリの物理アドレスそれぞれとの間のマッピングを管理するアドレス変換テーブルであるルックアップテーブル(LUT)を含む。ホストFTLは、このLUTを使用することによって、フラッシュストレージデバイス3内の不揮発性メモリ上のデータ配置を知ることができる。
フラッシュストレージデバイス3は、NAND型フラッシュメモリのような不揮発性メモリを含む。不揮発性メモリは、各々が複数のページを含む複数のブロックを含む。これらブロックの各々はデータを消去する単位であり、複数のページの各々はデータの書き込みおよび読み出しの単位である。
フラッシュストレージデバイス3は、ローレベルアブストラクションを実行することができる。ローレベルアブストラクションは不揮発性メモリのアブストラクションのための機能である。ローレベルアブストラクションは、データ配置を補助する機能等を含む。データ配置を補助する機能の例は、ホスト2からのユーザデータが書き込まれるべき書き込み先ブロックを割り当てる機能、ユーザデータの書き込み先位置(書き込み先ブロック、この書き込み先ブロック内の位置)を決定する機能、ユーザデータが書き込まれたこの書き込み先位置(ブロックアドレス、ブロック内オフセット)を上位階層(ホスト2)に通知する機能、等を含んでいてもよい。
フラッシュストレージデバイス3は、ホスト2から受信される様々なコマンドを実行する。これらコマンドには、フラッシュストレージデバイス3内の不揮発性メモリにデータを書き込むためのライトコマンド、不揮発性メモリからデータを読み出すためのリードコマンドが含まれる。本実施形態においては、各リードコマンドは、読み出すべきデータが格納されている記憶位置を示す物理アドレスを指定する。この物理アドレスは、読み出し対象のブロックのブロックアドレスと、この読み出し対象のブロック内の読み出し対象の記憶位置を示すオフセット(ブロック内オフセット)とによって表される。
フラッシュストレージデバイス3は、読み出し対象のブロックのブロックアドレスとこの読み出し対象のブロック内の読み出し対象の記憶位置を示すオフセットとを指定するリードコマンドそれぞれをホスト2から受信し、受信された各リードコマンドに応じてデータ読み出し動作を実行する。
図2はフラッシュストレージデバイス3とホスト2との間の役割分担を示す。
ホスト(サーバ)2においては、複数のエンドユーザにそれぞれ対応する複数の仮想マシン401が実行される。各仮想マシン401においては、対応するエンドユーザによって使用される、オペレーティングシステムおよびユーザアプリケーション402が実行される。
また、ホスト(サーバ)2においては、複数のユーザアプリケーション402にそれぞれ対応する複数のI/Oサービス403が実行される。これらI/Oサービス403には、論理ブロックアドレス(LBA)ベースのブロックI/Oサービス、キー・バリュー・ストアサービスなどが含まれてもよい。各I/Oサービス403は、タグそれぞれとフラッシュストレージデバイス3の物理アドレスそれぞれとの間のマッピングを管理するルックアップテーブル(LUT)を含む。
ここで、タグとは、アクセス対象のデータを識別可能な識別子を意味する。このタグの典型的な例は、これに限定されないが、LBAのような論理アドレスである。あるいは、ユーザアドレス(例えば、キー・バリュー・ストアのキー、またはこのキーのハッシュ値、等)がタグとして利用されてもよい。
フラッシュストレージデバイス3の物理アドレスは、フラッシュストレージデバイス3に含まれる不揮発性メモリ内の記憶位置(物理記憶位置)を特定するためのアドレスである。
LBAベースのブロックI/Oサービスにおいては、論理アドレス(LBA)それぞれとフラッシュストレージデバイス3の物理アドレスそれぞれとの間のマッピングを管理するLUTが使用されてもよい。
一方、キー・バリュー・ストアサービスにおいては、キー(またはキーのハッシュ値)それぞれとこれらキーに対応するデータが格納されているフラッシュストレージデバイス3の物理アドレスそれぞれとこれらキーに対応するデータそれぞれのデータ長との間のマッピングを管理するLUTが使用されてもよい。
各エンドユーザは、使用すべきアドレッシング方法(LBA、キー・バリュー・ストアのキー、このキーのハッシュ値、等)を選択することができる。
ホスト(サーバ)2においては、複数の仮想マシン401にそれぞれ対応する複数のライトバッファ(WB)404が管理されていてもよい。あるユーザアプリケーション402からのライトデータは、このユーザアプリケーション402に対応する仮想マシン401用のライトバッファ(WB)404に一時的に格納されてもよい。
ホスト(サーバ)2からフラッシュストレージデバイス3へのコマンドの送信およびフラッシュストレージデバイス3からホスト(サーバ)2へのコマンド完了のレスポンス等の返送は、ホスト(サーバ)2およびフラッシュストレージデバイス3の各々に存在するI/Oキュー500を介して実行される。
フラッシュストレージデバイス3は、フラッシュストレージデバイス3内の不揮発性メモリを論理的に分割することによって得られる複数の領域それぞれをQoSドメイン601として管理することができる。これらQoSドメイン601の各々は、不揮発性メモリに含まれる複数のブロックの部分集合である。不揮発性メモリに含まれる複数のブロックの各々は一つのQoSドメイン601のみに属し、同じブロックが異なるQoSドメイン601に同時に属することはない。
これらQoSドメイン601は、QoSドメインIDと称される識別子によってそれぞれ識別される。これらQoSドメインIDは、これら複数の領域(複数のQoSドメイン)をそれぞれアクセスするための複数の識別子として使用される。
本実施形態においては、各ライトコマンドは、ライトデータのタグ(例えば、ライトデータのLBA)と、ライトデータの長さとを指定する。LBAのようなタグと、ライトデータの長さとを指定するライトコマンドをホスト2から受信した場合、フラッシュストレージデバイス3は、フリープロック群のうちの一つのブロックを選択し、この選択したブロックを書き込み先ブロックとして割り当てる。フラッシュストレージデバイス3が複数のQoSドメイン601を管理するように構成されているケースにおいては、複数のQoSドメイン601によって共有される共通ブロック群602がフリーブロック群として使用されてもよい。
ここで、書き込み先ブロックとは、データが書き込まれるべきブロックを意味する。書き込み先ブロックは、一つの物理ブロックであってもよいし、複数の物理ブロックの集合を含むブロックグループであってもよい。ブロックグループはスーパーブロックとも称される。各ブロックグループは、例えば、異なる不揮発性メモリダイ(不揮発性メモリチップとも称される)からそれぞれ選択される複数の物理ブロックを含む。このため、あるブロックグループに属する複数の物理ブロックへのデータの書き込み及びこれら物理ブロックからのデータの読み出しを並列に実行することができる。
フリーブロックとは、新たな書き込み先ブロックとして再使用(再割り当て)可能な状態(フリー状態)のブロックを意味する。フリーブロックの典型的な例は、有効データを格納していないブロック(物理ブロック、またはスーパーブロック)である。有効データとは、LBAのようなタグに関連付けられている最新のデータを意味する。つまり、ホスト2のLUT(論理物理アドレス変換テーブル)から最新のデータとしてリンクされているデータは有効データである。また、無効データとは、LBAのようタグに関連付けられていないデータを意味する。ホスト2のLUTからリンクされていないデータは無効データである。例えば、あるLBAに対応する更新データがフラッシュストレージデバイス3に書き込まれた場合には、このLBAに対応する以前のデータは無効データとなる。
受信されたライトコマンドに関連付けられたデータが書き込み先ブロックに書き込まれると、フラッシュストレージデバイス3は、このデータのタグと、このデータの長さと、このデータが書き込まれた物理記憶位置を示す物理アドレス(ブロックアドレス、ブロック内オフセット)とをホスト2にアドレス記録要求として送出する。アドレス記録要求は、データが書き込まれた物理記憶位置を示す物理アドレス(ブロックアドレス、ブロック内オフセット)をホスト2に通知するための物理アドレス通知メッセージとして使用される。
ブロックアドレスは、この書き込み先ブロックを識別するためのアドレスである。ブロック内オフセットは、このデータが書き込まれた、この書き込み先スーパーブロック内の物理記憶位置を示す。
このアドレス記録要求に応じて、ホスト2は、このデータのLBAのようなタグにこの物理アドレス(ブロックアドレス、ブロック内オフセット)が関連付けられるようにLUTを更新することができる。
図3は、フラッシュストレージデバイス3の構成例を示す。
フラッシュストレージデバイス3は、コントローラ4および不揮発性メモリ(NAND型フラッシュメモリ)5を備える。フラッシュストレージデバイス3は、ランダムアクセスメモリ、例えば、DRAM6も備えていてもよい。
フラッシュストレージデバイス3は、コントローラ4および不揮発性メモリ(NAND型フラッシュメモリ)5を備える。フラッシュストレージデバイス3は、ランダムアクセスメモリ、例えば、DRAM6も備えていてもよい。
NAND型フラッシュメモリ5は、マトリクス状に配置された複数のメモリセルを含むメモリセルアレイを含む。NAND型フラッシュメモリ5は、2次元構造のフラッシュメモリであってもよいし、3次元構造のフラッシュメモリであってもよい。
NAND型フラッシュメモリ5のメモリセルアレイは、複数のブロックBLK0〜BLKm−1を含む。ブロックBLK0〜BLKm−1の各々は複数のページ(ここではページP0〜Pn−1)を含む。ブロックBLK0〜BLKm−1は、消去単位として機能する。ブロックは、「消去ブロック」、「物理ブロック」、または「物理消去ブロック」と称されることもある。ページP0〜Pn−1は、データ書き込み動作およびデータ読み込み動作の単位である。
コントローラ4は、ToggleNANDフラッシュインタフェース、オープンNANDフラッシュインタフェース(ONFI)のような、NANDインタフェース13を介して、不揮発性メモリであるNAND型フラッシュメモリ5に電気的に接続されている。コントローラ4は、NAND型フラッシュメモリ5を制御するように構成されたメモリコントローラとして動作する。このコントローラ4は、System−on−a−chip(SoC)のような回路によって実現されてもよい。
NAND型フラッシュメモリ5は、図4に示すように、複数のNAND型フラッシュメモリダイ(NAND型フラッシュメモリチップ)を含んでいてもよい。個々のNAND型フラッシュメモリダイは独立して動作可能である。このため、NAND型フラッシュメモリダイは、並列動作可能な単位として機能する。図4においては、NANDインタフェース13に16個のチャンネルCh.0〜Ch.15が接続されており、16個のチャンネルCh.0〜Ch.15の各々に2つのNAND型フラッシュメモリダイが接続されている場合が例示されている。この場合、チャンネルCh.0〜Ch.15に接続された16個のNAND型フラッシュメモリダイ#0〜#15がバンク#0として編成されてもよく、またチャンネルCh.0〜Ch.15に接続された残りの16個のNAND型フラッシュメモリダイ#16〜#31がバンク#1として編成されてもよい。バンクは、複数のメモリモジュールをバンクインタリーブによって並列動作させるための単位として機能する。図4の構成例においては、16個のチャンネルと、2つのバンクを使用したバンクインタリーブとによって、最大32個のNAND型フラッシュメモリダイを並列動作させることができる。
消去動作は、物理ブロックの単位で実行されてもよいし、並列動作可能な複数の物理ブロックの集合を含むスーパーブロックの単位で実行されてもよい。一つのスーパーブロックは、これに限定されないが、NAND型フラッシュメモリダイ#0〜#31から一つずつ選択される計32個の物理ブロックを含んでいてもよい。なお、NAND型フラッシュメモリダイ#0〜#31の各々はマルチプレーン構成を有していてもよい。例えば、NAND型フラッシュメモリダイ#0〜#31の各々が、2つのプレーン(プレーン#0、プレーン#1)を含むマルチプレーン構成を有する場合には、NAND型フラッシュメモリ5に含まれるプレーンの総数は64個である。一つのスーパーブロックはNAND型フラッシュメモリ5に含まれるこれら64個のプレーンから一つずつ選択される計64個の物理ブロックを含んでいてもよい。
図5は、幾つかのスーパーブロックSBの構成例を示す。
スーパーブロックアドレス0を有するスーパーブロックSB0は、NAND型フラッシュメモリダイ#0(Die#0)のプレーン#0に含まれるブロックアドレス0の物理ブロックBLK0、NAND型フラッシュメモリダイ#0(Die#0)のプレーン#1に含まれるブロックアドレス0の物理ブロックBLK0、NAND型フラッシュメモリダイ#1(Die#1)のプレーン#0に含まれるブロックアドレス0の物理ブロックBLK0、NAND型フラッシュメモリダイ#1(Die#1)のプレーン#1に含まれるブロックアドレス0の物理ブロックBLK0、NAND型フラッシュメモリダイ#2(Die#2)のプレーン#0に含まれるブロックアドレス0の物理ブロックBLK0、NAND型フラッシュメモリダイ#2(Die#2)のプレーン#1に含まれるブロックアドレス0の物理ブロックBLK0、…、NAND型フラッシュメモリダイ#31(Die#31)のプレーン#0に含まれるブロックアドレス0の物理ブロックBLK0、NAND型フラッシュメモリダイ#31(Die#31)のプレーン#1に含まれるブロックアドレス0の物理ブロックBLK0によって構成される。
スーパーブロックアドレス0を有するスーパーブロックSB0は、NAND型フラッシュメモリダイ#0(Die#0)のプレーン#0に含まれるブロックアドレス0の物理ブロックBLK0、NAND型フラッシュメモリダイ#0(Die#0)のプレーン#1に含まれるブロックアドレス0の物理ブロックBLK0、NAND型フラッシュメモリダイ#1(Die#1)のプレーン#0に含まれるブロックアドレス0の物理ブロックBLK0、NAND型フラッシュメモリダイ#1(Die#1)のプレーン#1に含まれるブロックアドレス0の物理ブロックBLK0、NAND型フラッシュメモリダイ#2(Die#2)のプレーン#0に含まれるブロックアドレス0の物理ブロックBLK0、NAND型フラッシュメモリダイ#2(Die#2)のプレーン#1に含まれるブロックアドレス0の物理ブロックBLK0、…、NAND型フラッシュメモリダイ#31(Die#31)のプレーン#0に含まれるブロックアドレス0の物理ブロックBLK0、NAND型フラッシュメモリダイ#31(Die#31)のプレーン#1に含まれるブロックアドレス0の物理ブロックBLK0によって構成される。
同様に、スーパーブロックアドレス255を有するスーパーブロックSB255は、NAND型フラッシュメモリダイ#0(Die#0)のプレーン#0に含まれるブロックアドレス255の物理ブロックBLK255、NAND型フラッシュメモリダイ#0(Die#0)のプレーン#1に含まれるブロックアドレス255の物理ブロックBLK255、NAND型フラッシュメモリダイ#1(Die#1)のプレーン#0に含まれるブロックアドレス255の物理ブロックBLK255、NAND型フラッシュメモリダイ#1(Die#1)のプレーン#1に含まれるブロックアドレス255の物理ブロックBLK255、NAND型フラッシュメモリダイ#2(Die#2)のプレーン#0に含まれるブロックアドレス255の物理ブロックBLK0、NAND型フラッシュメモリダイ#2(Die#2)のプレーン#1に含まれるブロックアドレス255の物理ブロックBLK255、…、NAND型フラッシュメモリダイ#31(Die#31)のプレーン#0に含まれるブロックアドレス255の物理ブロックBLK255、NAND型フラッシュメモリダイ#31(Die#31)のプレーン#1に含まれるブロックアドレス255の物理ブロックBLK255によって構成される。
次に、図3のコントローラ4の構成について説明する。
コントローラ4は、ホストインタフェース11、CPU12、NANDインタフェース13、およびDRAMインタフェース14、直接メモリアクセスコントローラ(DMAC)15、ECCエンコード/デコード部16等を含む。これらホストインタフェース11、CPU12、NANDインタフェース13、DRAMインタフェース14、DMAC15、ECCエンコード/デコード部16は、バス10を介して相互接続される。
このホストインタフェース11は、ホスト2との通信を実行するように構成されたホストインタフェース回路である。このホストインタフェース11は、例えば、PCIeコントローラ(NVMeコントローラ)であってもよい。あるいは、フラッシュストレージデバイス3がEthernet(登録商標)を介してホスト2に接続される構成においては、ホストインタフェース11は、NVMe over Fabrics(NVMeOF)コントローラであってもよい。
ホストインタフェース11は、ホスト2から様々なコマンドを受信する。これらコマンドには、ライトコマンド、リードコマンド、コピーコマンド、イレーズコマンド、トリムコマンド、他の様々なコマンドが含まれる。
CPU12は、ホストインタフェース11、NANDインタフェース13、DRAMインタフェース14、DMAC15、ECCエンコード/デコード部16を制御するように構成されたプロセッサである。CPU12は、フラッシュストレージデバイス3の電源オンに応答してNAND型フラッシュメモリ5または図示しないROMから制御プログラム(ファームウェア)をDRAM6にロードし、そしてこのファームウェアを実行することによって様々な処理を行う。なお、ファームウェアはコントローラ4内の図示しないSRAM上にロードされてもよい。このCPU12は、ホスト2からの様々なコマンドを実行するためのコマンド処理等を実行することができる。CPU12の動作は、CPU12によって実行される上述のファームウェアによって制御される。なお、コマンド処理の一部または全部は、コントローラ4内の専用ハードウェアによって実行してもよい。
CPU12は、ライト制御部21、データ通知部22、リード制御部23、およびコピー制御部24として機能することができる。なお、これらライト制御部21、データ通知部22、リード制御部23、およびコピー制御部24の各々一部または全部も、コントローラ4内の専用ハードウェアによって実現されてもよい。
ライト制御部21は、ライフタイム情報を含むライトコマンドを処理することができる。ここで、ライフタイム情報とは、ライトデータの推定されるライフタイムが属する期間を識別可能な情報を意味する。ライトデータのライフタイムとは、ライトデータが生成される時点からこのデータがその削除または更新(書き換え)によって無効化される時点までの期間を意味する。ライトコマンドに含まれるライフタイム情報は、このライトコマンドに関連付けられたライトデータの推定されるライフタイムに対応する期間の時間長そのものを示してもよい。あるいは、複数の期間とこれら期間に関連付けられた複数の識別子との対応関係が予め決定されているケースにおいては、ライトコマンドに含まれるライフタイム情報は、このライトコマンドに関連付けられたライトデータの推定されるライフタイムに対応する期間に関連付けられた識別子であってもよい。
ライト制御部21は、ライフタイム情報を含むライトコマンドそれぞれに基づき、同じ推定されるライフタイムを有するライトデータを同じ書き込み先ブロックに書き込む。そして、ライト制御部21は、このライトデータが書き込まれたNAND型フラッシュメモリ5の記憶位置(物理記憶位置)を示す物理アドレス(ブロックアドレス、ブロック内オフセット)をホスト2に返す。
例えば、受信したライトコマンドに含まれるライフタイム情報によって識別される期間が第1の期間(例えば1日)を示す場合、ライト制御部21は、第1の期間(例えば1日)に対応する推定されるライフタイムを有するデータを格納するための第1のブロック群用に割り当てられた書き込み先ブロックに、このライトコマンドに関連付けられたライトデータを書き込む。そして、ライト制御部21は、ライトデータが書き込まれたこの書き込み先ブロック内の記憶位置を示す物理アドレスをホスト2に返す。
これにより、第1の期間(例えば1日)を識別可能なライフタイム情報を含むライトコマンドそれぞれに関連付けられたライトデータは、第1のブロック群用に割り当てられたこの書き込み先ブロックに書き込まれる。この書き込み先ブロック全体がライトデータで満たされた場合には、ライト制御部21は、第1のブロック群用の新たな書き込み先ブロックを割り当てる。ライトデータで満たされた書き込み先ブロックの状態はオープン状態からクローズ状態に変更され、有効データを含み且つ第1のブロック群に属するアクティブブロックとしてコントローラ4によって管理される。
つまり、第1のブロック群用の書き込み先ブロックとして使用された各ブロックは、有効データを含み且つ第1のブロック群に属するアクティブブロックとしてコントローラ4によって管理される。第1のブロック群用の書き込み先ブロックとして使用された各ブロックに関して、このブロック全体がライトデータで満たされてからの経過時間が第1の期間(例えば1日)を過ぎた時、このブロック内の全てのデータはその削除または更新(書き換え)によって無効化される可能性が高い。全てのデータが無効化されたブロックに関しては、有効データを他のブロックにコピーするガベージコレクションを実行すること無く、このブロックに対する消去動作を実行することのみによって、このブロックをフリーブロックにすることができる。例えば、ホスト2がホストFTLを用いて各ブロック内のデータ部の有効/無効を管理するケースにおいては、あるアクティブブロック内の全てのデータ部がその削除または更新(書き換え)によって無効化された時点で、ホスト2はこのアクティブブロックをフリーブロックとして解放するためのコマンド(イレーズコマンド)をフラッシュストレージデバイス3に送出してもよい。あるいは、フラッシュストレージデバイス3が各ブロック内のデータ部の有効/無効を管理するケースにおいては、あるアクティブブロック内の全てのデータ部がその削除または更新(書き換え)によって無効化された時点で、フラッシュストレージデバイス3はこのアクティブブロックをフリーブロックとして解放する動作を自動的に実行してもよい。
よって、有効データと無効データとが混在するブロックから有効データのみを他のブロックにコピーするガベージコレクションを実行することが必要な頻度を抑えることができるので、フラッシュストレージデバイス3のライトアンプリフィケーションを最小化することができる。
受信したライトコマンドに含まれるライフタイム情報によって識別される期間が第2の期間(例えば3日)である場合、ライト制御部21は、第2の期間(例えば3日)に対応する推定されるライフタイムを有するデータを格納するための第2のブロック群用に割り当てられた書き込み先ブロックに、このライトコマンドに関連付けられたライトデータを書き込む。そして、ライト制御部21は、ライトデータが書き込まれたこの書き込み先ブロック内の記憶位置を示す物理アドレスをホスト2に返す。
これにより、第2の期間(例えば3日)を識別可能なライフタイム情報を含むライトコマンドそれぞれに関連付けられたライトデータは、第2のブロック群用に割り当てられたこの書き込み先ブロックに書き込まれる。この書き込み先ブロック全体がライトデータで満たされた場合には、ライト制御部21は、第2のブロック群用の新たな書き込み先ブロックを割り当てる。ライトデータで満たされた書き込み先ブロックの状態はオープン状態からクローズ状態に変更され、有効データを含み且つ第2のブロック群に属するアクティブブロックとしてコントローラ4によって管理される。
つまり、第2のブロック群用の書き込み先ブロックとして使用された各ブロックは、有効データを含み且つ第2のブロック群に属するアクティブブロックとしてコントローラ4によって管理される。第2のブロック群用の書き込み先ブロックとして使用された各ブロックに関して、このブロック全体がライトデータで満たされてからの経過時間が第2の期間(例えば1日)を過ぎた時、このブロック内の全てのデータはその削除または更新(書き換え)によって無効化される可能性が高い。全てのデータが無効化されたブロックに関しては、有効データを他のブロックにコピーするガベージコレクションを実行すること無く、このブロックに対する消去動作を実行することのみによって、このブロックをフリーブロックにすることができる。
受信したライトコマンドに含まれるライフタイム情報によって識別される期間が第3の期間(例えば7日)である場合、ライト制御部21は、第3の期間(例えば7日)に対応する推定されるライフタイムを有するデータを格納するための第3のブロック群用に割り当てられた書き込み先ブロックに、このライトコマンドに関連付けられたライトデータを書き込む。そして、ライト制御部21は、ライトデータが書き込まれたこの書き込み先ブロック内の記憶位置を示す物理アドレスをホスト2に返す。
これにより、第3の期間(例えば7日)を識別可能なライフタイム情報を含むライトコマンドそれぞれに関連付けられたライトデータは、第3のブロック群用に割り当てられたこの書き込み先ブロックに書き込まれる。この書き込み先ブロック全体がライトデータで満たされた場合には、ライト制御部21は、第3のブロック群用の新たな書き込み先ブロックを割り当てる。ライトデータで満たされた書き込み先ブロックの状態はオープン状態からクローズ状態に変更され、有効データを含み且つ第3のブロック群に属するアクティブブロックとしてコントローラ4によって管理される。
つまり、第3のブロック群用の書き込み先ブロックとして使用された各ブロックは、有効データを含み且つ第3のブロック群に属するアクティブブロックとしてコントローラ4によって管理される。第3のブロック群用の書き込み先ブロックとして使用された各ブロックに関して、このブロック全体がライトデータで満たされてからの経過時間が第3の期間(例えば7日)を過ぎた時、このブロック内の全てのデータはその削除または更新(書き換え)によって無効化される可能性が高い。全てのデータが無効化されたブロックに関しては、有効データを他のブロックにコピーするガベージコレクションを実行すること無く、このブロックに対する消去動作を実行することのみによって、このブロックをフリーブロックにすることができる。
なお、データの実際のライフタイムは変化する場合もある。したがって、たとえホスト2による以前のライフタイムの推定によって、複数の期間のうちの第1の期間(例えば1日)に属するライフタイムを有するデータであると判定されたデータであっても、このデータの実際のライフタイムは第1の期間よりも長くなる場合もある。
この場合、もしこのデータが第1の期間(例えば1日)に属するライフタイムを有するデータとして扱われ続けるよりも、このデータが第1の期間よりも長い期間(例えば、3日または7日)に属するライフタイムを有するデータとして扱われた方が、ライトアンプリフィケーションを低下させることが可能となる場合がある。
そこで、データ通知部22は、例えば、第1のブロック群用の書き込み先ブロックとして使用されたブロック(第1のブロック群に属するアクティブブロック群)のうち、ライトデータで満されてからの経過時間が第1の期間(例えば1日)超えたブロックを検出する。この検出されるブロックは、第1の期間(例えば1日)が過ぎても有効データが残っているブロックである。
そして、データ通知部22は、検出したブロックに格納されている有効データ部それぞれを識別可能な識別子(例えばLBA)のリスト、または検出したブロックに格納されている全てのデータ部それぞれを識別可能な識別子(例えばLBA)のリストをホスト2に通知する。
フラッシュストレージデバイス3が上述の第1タイプストレージデバイスとして実現されているケースにおいては、コントローラ4は各ブロックに格納されているデータ部の有効/無効を管理しているので、コントローラ4のデータ通知部22は、検出したブロックに格納されている有効データ部それぞれを識別可能な識別子(例えばLBA)のリストをホスト2に通知することができる。
一方、フラッシュストレージデバイス3が上述の第2タイプストレージデバイスとして実現されているケースにおいては、各ブロックに格納されているデータ部の有効/無効は基本的にはホスト2によって管理される。したがって、コントローラ4のデータ通知部22は、検出したブロックに格納されている全てのデータ部それぞれを識別可能な識別子(例えばLBA)のリストをホスト2に通知してもよい。
なお、フラッシュストレージデバイス3が上述の第2タイプストレージデバイスとして実現されているケースであっても、コントローラ4は、ホスト2から受信されるトリムコマンドそれぞれに基づいて、各ブロックに格納されているデータ部の有効/無効を管理することもできる。この場合には、コントローラ4は、検出したブロックに格納されている有効データ部それぞれを識別可能な識別子(例えばLBA)のリストをホスト2に通知してもよい。
フラッシュストレージデバイス3から受信したLBAリストに基づき、ホスト2は、ライトデータで満されてからの経過時間が第1の期間(例えば1日)超えたブロックに格納されている各データ部(各有効データ部)のライフタイムを再推定するチャンスを得ることができる。そして、これら各データ部のライフタイムの再推定の結果に基づいて、ホスト2は、必要に応じて、このブロックに格納されている一つ以上の有効データ部をコピー対象データとして指定し且つ第1のブロック銀とは異なる別のブロック群(例えば、第2のブロック群または第3のブロック群)をコピー先ブロック群として指定するコピー要求をフラッシュストレージデバイス3に送出することができる。これにより、実際のライフタイムが第1の期間(例えば1日)よりも長いデータを、第1の期間よりも長い期間に対応する他のデータが格納されるブロックと同じブロックに再格納することが可能となる。
リード制御部23は、物理アドレス(ブロックアドレスおよびブロック内オフセット)を指定するリードコマンドをホスト2から受信した場合、これらブロックアドレスおよびブロック内オフセットに基づいてNAND型フラッシュメモリ5からデータをリードする。リード対象のブロックは、ブロックアドレスによって特定される。このブロック内のリード対象の物理記憶位置は、ブロック内オフセットによって特定される。
コピー制御部24は、上述の検出したブロックに格納されている一つ以上の有効データ部をコピー対象データとして指定し且つ別の第2のブロック群をコピー先ブロック群として指定する上述のコピー要求をホスト2から受信する。そして、この受信したコピー要求に基づいて、コピー制御部24は、コピー対象データとして指定された一つ以上の有効データ部を、検出したブロックから、コピー先ブロック群として指定された上述のブロック群にコピーする。これにより、以前の予期されたライフタイムを過ぎたデータ部を、このデータ部の再推定されたライフタイムと同様のライフタイムを有するデータを格納するために使用されているブロック群にコピーすることが可能となる。
このコピー動作が完了した後、ホスト2は、このブロックをフリーブロックにするためにこのブロックを指定するイレーズコマンドをフラッシュストレージデバイス3に送出してもよい。このイレーズコマンドの受信に応じて、コントローラ4は、このイレーズコマンドによって指定されたブロックの消去動作を実行し、このブロックをフリーブロックとして管理する。
NANDインタフェース13は、CPU12の制御の下、NAND型フラッシュメモリ5を制御するように構成されたメモリ制御回路である。
DRAMインタフェース14は、CPU12の制御の下、DRAM6を制御するように構成されたDRAM制御回路である。DRAM6の記憶領域は、ブロック管理テーブル32を格納するために使用される。ブロック管理テーブル32は、NAND型フラッシュメモリ5内の複数のブロックそれぞれに対応する複数の管理テーブルを含む。各管理テーブルは、この管理テーブルに対応するブロックを管理するための管理情報(メタデータ)を格納するために使用される。メタデータは、これに限定されないが、対応するブロックの書き換え回数(プログラム/イレーズサイクルの数)、オープン/クローズ状態、等を含んでいてもよい。また、メタデータは、対応するブロックに格納されているデータ部それぞれの有効/無効を示すバリッドビットマップデータを含んでいてもよい。
オープン/クローズ状態は、このブロックがオープン状態またはクローズ状態のいずれであるかを示す。オープン状態は、このブロックが書き込み先ブロックとして使用中の状態を示す。クローズ状態は、このブロックがデータで満たされてアクティブブロックとして管理されている状態を示す。
また、フラッシュストレージデバイスが第1タイプストレージデバイスとして実現されているケースにおいては、DRAM6の記憶領域は、アドレス変換テーブルとして機能するルックアップテーブル(LUT)33を格納するために使用される。
DMAC15は、CPU12の制御の下、ホスト2内のメモリ(ライトバッファ)とDRAM6(内部バッファ)との間のデータ転送を実行する。ホスト2のライトバッファから内部バッファにライトデータを転送すべき場合には、CPU12は、ライトバッファ上の位置を示す転送元アドレス、データサイズ、内部バッファ上の位置を示す転送先アドレスをDMAC15に対して指定する。
ECCエンコード/デコード部16は、NAND型フラッシュメモリ5にデータをライトすべき時、書き込むべきライトデータをエンコード(ECCエンコード)することによってこのデータにエラー訂正コード(ECC)を付加する。NAND型フラッシュメモリ5からデータがリードされた時、ECCエンコード/デコード部16は、リードされたデータに付加されているECCを使用して、このデータのエラー訂正を行う(ECCデコード)。
図6は、同じ推定されるライフタイムを有するデータを同じブロックに書き込む動作と、あるブロックがライトデータで満されてからの経過時間がある期間を超えた場合、このブロックに格納されているデータ部それぞれの識別子をホスト2に通知する動作と、ホスト2からの要求に応じて、このブロックに格納されているデータ部を別の推定されるライフタイムを有するデータを格納するためのブロック群にコピーする動作とを説明するためのブロック図である。
ホスト2は、ライフタイム推定部201を含む。ライフタイム推定部201は、フラッシュストレージデバイス3に書き込むべきデータのライフタイムを推定し、このデータの推定されるライフタイムを、互いに異なる期間を有する複数のライフタイムグループ(例えば、グループ#1、グループ#2、グループ#3、グループ#4)に分類する。ここでは、グループ#1に対応する期間が1日であり、グループ#2に対応する期間が3日であり、グループ#3に対応する期間が7日であり、グループ#4に対応する期間が1ヶ月である場合が例示されている。
書き込むべきデータの推定されるライフタイムが1日以下である場合、ライフタイム推定部201は、このデータをグループ#1に分類する。この場合、ホスト2は、グループ#1に対応する期間(ここでは1日)を識別可能なライフタイム情報を含むライトコマンドをフラッシュストレージデバイス3に送出する。このライフタイム情報は1日に対応する時間長を示してもよい。あるいは、グループ#1とグループ#1に対応する期間(1日)との対応関係がフラッシュストレージデバイス3に予め通知されている場合には、このライフタイム情報は、グループ#1に対応する期間(1日)に関連付けられた識別子、例えば、グループ#1の識別子を示してもよい。
書き込むべきデータの推定されるライフタイムが1日よりも長く、且つ3日以下である場合、ライフタイム推定部201は、このデータをグループ#2に分類する。この場合、ホスト2は、グループ#2に対応する期間(ここでは3日)を識別可能なライフタイム情報を含むライトコマンドをフラッシュストレージデバイス3に送出する。このライフタイム情報は3日に対応する時間長を示してもよい。あるいは、グループ#2とグループ#2に対応する期間(3日)との対応関係がフラッシュストレージデバイス3に予め通知されている場合には、このライフタイム情報は、グループ#2に対応する期間(3日)に関連付けられた識別子、例えば、グループ#2の識別子を示してもよい。
書き込むべきデータの推定されるライフタイムが3日よりも長く、且つ7日以下である場合、ライフタイム推定部201は、このデータをグループ#3に分類する。この場合、ホスト2は、グループ#3に対応する期間(ここでは7日)を識別可能なライフタイム情報を含むライトコマンドをフラッシュストレージデバイス3に送出する。このライフタイム情報は7日に対応する時間長を示してもよい。あるいは、グループ#3とグループ#3に対応する期間(7日)との対応関係がフラッシュストレージデバイス3に予め通知されている場合には、このライフタイム情報は、グループ#3に対応する期間(7日)に関連付けられた識別子、例えば、グループ#3の識別子を示してもよい。
書き込むべきデータの推定されるライフタイムが7日よりも長く、且つ1ヶ月以下である場合、ライフタイム推定部201は、このデータをグループ#4に分類する。この場合、ホスト2は、グループ#4に対応する期間(ここでは1ヶ月)を識別可能なライフタイム情報を含むライトコマンドをフラッシュストレージデバイス3に送出する。このライフタイム情報はグループ#4に対応する期間(ここでは1ヶ月)に対応する時間長を示してもよい。あるいは、グループ#4とグループ#4に対応する期間(1ヶ月)との対応関係がフラッシュストレージデバイス3に予め通知されている場合には、このライフタイム情報は、グループ#4に対応する期間(ここでは1ヶ月)に関連付けられた識別子、例えば、グループ#4の識別子を示してもよい。
フラッシュストレージデバイス3においては、4つのグループ(グループ#1〜グループ#4)にそれぞれ対応する4つのブロック群41〜44を含むフラッシュブロックプールが管理される。また、各フリーブロックはフリーブロックプール45によって管理される。
ブロック群41は、グループ#1の期間(1日)に対応する推定されるライフタイムを有するデータを格納するためのブロックの集合である。フラッシュストレージデバイス3においては、まず、フリーブロックプール45からあるフリーブロックが選択され、選択されたフリーブロックがブロック群41用の書き込み先ブロックとして割り当てられる。グループ#1に対応する期間を識別するためのライフタイム情報を含む各ライトコマンドに関連付けられたライトデータは、ブロック群41用に割り当てられた書き込み先ブロックに書き込まれる。この書き込み先ブロック全体がライトデータで満たされると、換言すれば、この書き込み先ブロックの最終記憶位置(最終ページ)にデータが書き込まれると、フリーブロックプール45からフリーブロックが再び選択され、選択されたフリーブロックがブロック群41用の新たな書き込み先ブロックとして割り当てられる。ライトデータで満たされたブロックの状態はオープン状態からクローズ状態に遷移され、このブロックは、ブロック群41に属し且つ有効データを含むアクティブブロックとして管理される。
図6においては、ブロックBLK1、ブロックBLK2、ブロックBLK3、ブロックBLK4、ブロックBLK5、ブロックBLK6、ブロックBLK7、ブロックBLK8がこの順序でブロック群41用の書き込み先ブロックとして割り当てられた場合が例示されている。ブロックBLK8はブロック群41用の現在の書き込み先ブロックである。ブロックBLK1はブロック群41用の書き込み先ブロックとして使用されたブロックの中で最も古いブロックである。
ブロック群42は、グループ#2の期間(3日)に対応する推定されるライフタイムを有するデータを格納するためのブロックの集合である。フラッシュストレージデバイス3においては、フリーブロックプール45からあるフリーブロックが選択され、選択されたフリーブロックがブロック群42用の書き込み先ブロックとして割り当てられる。グループ#2に対応する期間を識別するためのライフタイム情報を含む各ライトコマンドに関連付けられたライトデータは、ブロック群42用に割り当てられた書き込み先ブロックに書き込まれる。この書き込み先ブロック全体がライトデータで満たされると、フリーブロックプール45からフリーブロックが再び選択され、選択されたフリーブロックがブロック群42用の新たな書き込み先ブロックとして割り当てられる。ライトデータで満たされたブロックの状態はオープン状態からクローズ状態に遷移され、このブロックは、ブロック群42に属し且つ有効データを含むアクティブブロックとして管理される。
図6においては、ブロックBLK21、ブロックBLK22、ブロックBLK23、ブロックBLK24、ブロックBLK25、ブロックBLK26がこの順序でブロック群42用の書き込み先ブロックとして割り当てられた場合が例示されている。ブロックBLK26はブロック群42用の現在の書き込み先ブロックである。ブロックBLK21はブロック群42用の書き込み先ブロックとして使用されたブロックの中で最も古いブロックである。
ブロック群43は、グループ#3の期間(7日)に対応する推定されるライフタイムを有するデータを格納するためのブロックの集合である。フラッシュストレージデバイス3においては、フリーブロックプール45からあるフリーブロックが選択され、選択されたフリーブロックがブロック群43用の書き込み先ブロックとして割り当てられる。グループ#3に対応する期間を識別するためのライフタイム情報を含む各ライトコマンドに関連付けられたライトデータは、ブロック群43用に割り当てられた書き込み先ブロックに書き込まれる。この書き込み先ブロック全体がライトデータで満たされると、フリーブロックプール45からフリーブロックが再び選択され、選択されたフリーブロックがブロック群43用の新たな書き込み先ブロックとして割り当てられる。ライトデータで満たされたブロックの状態はオープン状態からクローズ状態に遷移され、このブロックは、ブロック群43に属し且つ有効データを含むアクティブブロックとして管理される。
図6においては、ブロックBLK31、ブロックBLK32、ブロックBLK33、ブロックBLK34がこの順序でブロック群43用の書き込み先ブロックとして割り当てられた場合が例示されている。ブロックBLK34はブロック群43用の現在の書き込み先ブロックである。ブロックBLK31はブロック群43用の書き込み先ブロックとして使用されたブロックの中で最も古いブロックである。
ブロック群44は、グループ#4の期間(1ヶ月)に対応する推定されるライフタイムを有するデータを格納するためのブロックの集合である。フラッシュストレージデバイス3においては、フリーブロックプール45からあるフリーブロックが選択され、選択されたフリーブロックがブロック群44用の書き込み先ブロックとして割り当てられる。グループ#4に対応する期間を識別するためのライフタイム情報を含む各ライトコマンドに関連付けられたライトデータは、ブロック群44用に割り当てられた書き込み先ブロックに書き込まれる。この書き込み先ブロック全体がライトデータで満たされると、フリーブロックプール45からフリーブロックが再び選択され、選択されたフリーブロックがブロック群44用の新たな書き込み先ブロックとして割り当てられる。ライトデータで満たされたブロックの状態はオープン状態からクローズ状態に遷移され、このブロックは、ブロック群44に属し且つ有効データを含むアクティブブロックとして管理される。
図6においては、ブロックBLK41、ブロックBLK42、ブロックBLK43、ブロックBLK44、ブロックBLK45、ブロックBLK46、ブロックBLK47がこの順序でブロック群44用の書き込み先ブロックとして割り当てられた場合が例示されている。ブロックBLK47はブロック群43用の現在の書き込み先ブロックである。ブロックBLK41はブロック群44用の書き込み先ブロックとして使用されたブロックの中で最も古いブロックである。
ブロック群41、ブロック群42、ブロック群43の各々に関して、コントローラ4は、ライトデータで満たされてからの経過時間がそのブロック群に対応する期間(1日、3日、または7日)を超えたブロックを検出する。
あるブロックがライトデータで満たされてからの経過時間とは、このブロックの最終記憶位置にデータが書き込まれてからの経過時間を意味する。書き込み先ブロックが一つの物理ブロックから構成されるケースにおいては、最終記憶位置はこの物理ブロックの最終ページである。書き込み先ブロックが例えば一つのスーパーブロックから構成されるケースにおいては、最終記憶位置は、このスーパーブロックを構成する複数の物理ブロックの内の最後の物理ブロックの最終ページである。例えば、図5のスーパーブロックSB0においては、NAND型フラッシュメモリダイ#31(Die#31)のプレーン#1に含まれる物理ブロックBLK0の最終ページがスーパーブロックSB0の最終記憶位置である。
今、ブロック群41において、ブロックBLK1がライトデータで満たされてからの経過時間がブロック群41に対応する期間(1日)を超えた場合を想定する。
この場合、コントローラ4は、ブロックBLK1内の有効データ部のライフタイムを再推定する機会をホスト2に与えるために、このブロックBLK1内に格納されている有効データ部それぞれのLBAのリスト、またはブロックBLK1内に格納されている全てのデータ部それぞれのLBAのリストをホスト2に通知する。
フラッシュストレージデバイス3から通知されるLBAリストに基づき、ホスト2は、ブロックBLK1内に格納されている各有効データ部(つまり、以前の推定されるライフタイムに対応する期間が過ぎた各有効データ部)のライフタイムを再推定する。
例えば、ブロックBLK1内に格納されているある有効データ部の再推定された新たなライフタイムが例えば3日である場合、ホスト2は、この有効データ部をコピー対象データとして指定し且つブロック群42(例えば、ブロック群42の現在の書き込み先ブロックBLK26)をコピー先ブロック群として指定するコピー要求(コピーコマンド)をフラッシュストレージデバイス3に送出する。
また、ブロックBLK1内に格納されているある有効データ部の再推定された新たなライフタイムが例えば7日である場合、ホスト2は、この有効データ部をコピー対象データとして指定し且つブロック群43(例えば、ブロック群43の現在の書き込み先ブロックBLK34)をコピー先ブロック群として指定するコピー要求(コピーコマンド)をフラッシュストレージデバイス3に送出する。
また、ブロックBLK1内に格納されているある有効データ部の再推定された新たなライフタイムが例えば1ヶ月である場合、ホスト2は、この有効データ部をコピー対象データとして指定し且つブロック群44(例えば、ブロック群44の現在の書き込み先ブロックBLK47)をコピー先ブロック群として指定するコピー要求(コピーコマンド)をフラッシュストレージデバイス3に送出する。
ホスト2から受信されるコピー要求に基づいて、コントローラ4は、このコピー要求によってコピー対象データとして指定された有効データ部を、このコピー要求によってコピー先ブロック群として指定されたブロック群(ブロック群42、ブロック群43、またはブロック群44)にコピーする。
ブロックBLK1内の必要な有効データ部のコピー動作が完了した後、ホスト2は、ブロックBLK1をフリーブロックとして解放するために、ブロックBLK1を指定するイレーズコマンドをフラッシュストレージデバイス3に送出してもよい。このイレーズコマンドの受信に応じて、コントローラ4は、ブロックBLK1に対する消去動作を実行し、そしてブロックBLK1をフリーブロックプール45によって管理する。換言すれば、ブロックBLK1はフリーブロックプール45に移動される。
なお、LBAリストによって指定された全ての有効データ部が不要なデータであるとホスト2が判定した場合には、ホスト2は、コピー要求をフラッシュストレージデバイス3に送出せずに、ブロックBLK1を指定するイレーズコマンドをフラッシュストレージデバイス3に直ちに送出してもよい。
同様に、ブロック群42において、例えば、ブロックBLK21がライトデータで満たされてからの経過時間がブロック群42に対応する期間(3日)を超えた場合、コントローラ4は、ブロックBLK21内に格納されている有効データ部それぞれのLBAのリスト、またはブロックBLK21内に格納されている全てのデータ部それぞれのLBAのリストをホスト2に通知する。
また、ブロック群43において、例えば、ブロックBLK31がライトデータで満たされてからの経過時間がブロック群43に対応する期間(7日)を超えた場合、コントローラ4は、ブロックBLK31内に格納されている有効データ部それぞれのLBAのリスト、またはブロックBLK31内に格納されている全てのデータ部それぞれのLBAのリストをホスト2に通知する。
図7は、あるブロックがライトデータで満されてからの経過時間がある期間を超えた場合、このブロックに格納されている有効データ部それぞれの識別子をホスト2に通知する動作を説明するための図である。
ここでは、ブロック群41に属するブロックBLK1がライトデータで満されてからの経過時間がブロック群41に対応する期間(1日)を超えた場合を想定する。また、ブロックBLK1がページ0〜ページ4の4ページから構成され、各ページに4つのデータ部が格納されている場合を想定する。
図7の上部に示されているように、ブロックBLK1のページ0においては、例えば、LBA11に対応するデータ部D1、LBA12に対応するデータ部D2、LBA21に対応するデータ部D3、LBA25に対応するデータ部D4が格納されている。また、ブロックBLK1のページ1においては、例えば、LBA31に対応するデータ部D5、LBA32に対応するデータ部D6、LBA33に対応するデータ部D7、LBA40に対応するデータ部D8が格納されている。ブロックBLK1のページ2においては、例えば、LBA51に対応するデータ部D9、LBA52に対応するデータ部D10、LBA61に対応するデータ部D11、LBA62に対応するデータ部D12が格納されている。ブロックBLK1のページ3においては、例えば、LBA71に対応するデータ部D13、LBA72に対応するデータ部D14、LBA73に対応するデータ部D15、LBA74に対応するデータ部D16が格納されている。これらLBAの各々は、対応するデータ部と一緒にブロックBLK1に格納されていてもよい。
図7の中部は、ブロックBLK1に対応するバリッドビットマップ(ここでは、“1110100001001000”)を示す。このバリッドビットマップ内の“1”のビットは、このビットに対応する記憶位置内のデータ部が有効データであることを示す。一方、このバリッドビットマップ内の“0”のビットは、このビットに対応する記憶位置内のデータ部が無効データであることを示す。
コントローラ4は、このバリッドビットマップ“1110100001001000”を参照することによってブロックBLK1に格納されている有効データ部D1、有効データ部D2、有効データ部D3、有効データ部D5、有効データ部D10、有効データ部D13それぞれを検出する。
そして、図7の下部に示すように、コントローラ4は、これら有効データ部D1、有効データ部D2、有効データ部D3、有効データ部D5、有効データ部D10、有効データ部D13にそれぞれ対応するLBAリスト(LBA11、LBA12、LBA21、LBA31、LBA52、LBA71)をホスト2に通知する。
なお、ホスト2が各データ部の有効/無効を管理しているケースにおいては、コントローラ4は、ブロックBLK1に格納されている全てのデータ部に対応するLBAリスト(LBA11、LBA12、LBA21、LBA25、LBA31、LBA32、LBA33、LBA40、LBA51、LBA52、LBA61、LBA62、LBA71、LBA72、LBA73、LBA74)をホスト2に通知してもよい。
図8は、ライフタイム再推定動作とデータコピー動作を説明するための図である。
ホスト2がLBAリストをフラッシュストレージデバイス3から受信した場合、ホスト2は、LBAリストによって指定される各有効データ部のライフタイムを再推定し、これによって各有効データ部の新たな推定されるライフタイムを求める(ステップS11)。そして、ホスト2は、これら有効データ部それぞれの新たな推定されるライフタイム(再推定されたライフタイム)に基づいてこれら有効データ部をグループ#1〜グループ#4に再分類することによって、各有効データ部に対応するコピー先ブロック群を決定する(ステップS12)。他のブロック群にコピーすべき有効データ部が存在する場合、ホスト2は、この有効データをコピー対象データとして指定し且つこの有効データが再分類されたグループに対応するブロック群をコピー先ブロック群とを指定するコピー要求をフラッシュストレージデバイス3に送出する(ステップS13)。
ホスト2がLBAリストをフラッシュストレージデバイス3から受信した場合、ホスト2は、LBAリストによって指定される各有効データ部のライフタイムを再推定し、これによって各有効データ部の新たな推定されるライフタイムを求める(ステップS11)。そして、ホスト2は、これら有効データ部それぞれの新たな推定されるライフタイム(再推定されたライフタイム)に基づいてこれら有効データ部をグループ#1〜グループ#4に再分類することによって、各有効データ部に対応するコピー先ブロック群を決定する(ステップS12)。他のブロック群にコピーすべき有効データ部が存在する場合、ホスト2は、この有効データをコピー対象データとして指定し且つこの有効データが再分類されたグループに対応するブロック群をコピー先ブロック群とを指定するコピー要求をフラッシュストレージデバイス3に送出する(ステップS13)。
コピー対象データはコピー元物理アドレスによって指定されてもよい。例えば、図7に示したブロックBLK1のデータD1がコピー対象データである場合、コピー元物理アドレスは、ブロックアドレス=BLK1、ページアドレス=0、オフセット=0によって表される。コピー先ブロック群はグループ#2〜4の一つを識別する識別子によって指定されてもよいし、コピー先ブロック群内のコピー先ブロックを示すコピー先ブロックアドレスによって指定されてもよい。
いま、ブロックBLK1のデータD1をブロック群43の現在の書き込み先ブロックBLK34にコピーする場合を想定する。この場合、例えば、コピー元物理アドレス(ブロックアドレス=BLK1、ページアドレス=0、オフセット=0)とコピー先ブロックアドレス(ブロックアドレス=BLK34)とを指定するコピー要求がホスト2からフラッシュストレージデバイス3に送出されてもよい。このコピー要求の受信に応じて、フラッシュストレージデバイス3は、データD1をブロックBLK1から読み出し且つ読み出されたデータをブロックBLK34に書き込むことによって、データD1をブロックBLK1からブロック群43のブロックBLK34にコピーする。
なお、ブロックBLK1内に格納されている複数の有効データ部それぞれが分類されたてグループが互いに異なる場合には、これら複数の有効データ部がコピーされるべきコピー先ブロック群は互いに異なる。
また、ブロックBLK1内に格納されているある有効データ部が再びグループ#1に分類されたケースにおいては、この有効データ部に対するコピー動作を実行しなくてもよいし、この有効データ部を、グループ#1に対応するブロック群41用の現在の書き込み先ブロックにコピーするコピー動作を実行してもよい。
図9は、同じ推定されるライフタイムを有するデータを同じブロックに書き込む動作と、あるブロックがライトデータで満されてからの経過時間がある期間を超えた場合、このブロックに格納されているデータ部それぞれの識別子をホスト2に通知する動作と、ホスト2からの要求に応じて、このブロックに格納されているデータ部を別の推定されるライフタイムを有するデータを格納するためのブロック群にコピーする動作と、ホストからの要求に応じて、このブロックに格納されているあるデータ部を無効化する動作とを説明するためのブロック図である。
ホスト2がLBAリストをフラッシュストレージデバイス3から受信した場合、ホスト2は、このLBAリストに含まれる特定のLBAに対応するデータ部のコピーをフラッシュストレージデバイス3に要求するだけでなく、このLBAリストに含まれる別の特定のLBAに対応するデータ部を無効化すべきことをフラッシュストレージデバイス3に要求することもできる。
今、ブロック群41において、ブロックBLK1がライトデータで満たされてからの経過時間がブロック群41に対応する期間(1日)を超えた場合を想定する。この場合、コントローラ4は、ブロックBLK1内に格納されている有効データ部それぞれのLBAのリスト、またはブロックBLK1内に格納されている全てのデータ部それぞれのLBAのリストをホスト2に通知する。
ホスト2はブロックBLK1内に格納されている各有効データ部のライフタイムを再推定する。例えば、ブロックBLK1内に格納されているあるデータ部の再推定された新たなライフタイムが3日である場合、ホスト2は、この有効データ部をブロックBLK1からブロック群42(例えば、ブロック群42の現在の書き込み先ブロックBLK26)にコピーするためのコピー要求(コピーコマンド)をフラッシュストレージデバイス3に送出する。また、ホスト2がブロックBLK1内に格納されている別の有効データ部がもはや不要であると判定した場合、ホスト2は、この有効データ部を無効化対象データ部として指定する無効化要求(トリムコマンド)をフラッシュストレージデバイス3に送出する。
ホスト2から受信されるコピー要求に基づいて、コントローラ4は、このコピー要求によってコピー対象データとして指定されたデータ部を、ブロックBLK1からブロック群42にコピーする。また、ホスト2から受信される無効化要求に基づいて、コントローラ4は、この無効化要求によって無効化対象データとして指定されたブロックBLK1内のデータ部を無効化する。
同様に、ブロック群42において、例えば、ブロックBLK21がライトデータで満たされてからの経過時間がブロック群42に対応する期間(3日)を超えた場合、コントローラ4は、ブロックBLK21内に格納されている有効データ部それぞれのLBAのリスト、またはブロックBLK21内に格納されている全てのデータ部それぞれのLBAのリストをホスト2に通知する。
ホスト2はブロックBLK21内に格納されている各有効データ部のライフタイムを再推定する。例えば、ブロックBLK21内に格納されているあるデータ部の再推定された新たなライフタイムが7日である場合、ホスト2は、この有効データ部をブロックBLK21からブロック群43(例えば、ブロック群43の現在の書き込み先ブロックBLK34)にコピーするためのコピー要求(コピーコマンド)をフラッシュストレージデバイス3に送出する。また、ホスト2がブロックBLK21内に格納されている別の有効データ部がもはや不要であると判定した場合、ホスト2は、この有効データ部を無効化対象データ部として指定する無効化要求(トリムコマンド)をフラッシュストレージデバイス3に送出する。
また同様に、ブロック群43において、例えば、ブロックBLK31がライトデータで満たされてからの経過時間がブロック群43に対応する期間(7日)を超えた場合、コントローラ4は、ブロックBLK31内に格納されている有効データ部それぞれのLBAのリスト、またはブロックBLK31内に格納されている全てのデータ部それぞれのLBAのリストをホスト2に通知する。
ホスト2はブロックBLK31内に格納されている各有効データ部のライフタイムを再推定する。例えば、ブロックBLK31内に格納されているあるデータ部の再推定された新たなライフタイムが1ヶ月である場合、ホスト2は、この有効データ部をブロックBLK31からブロック群44(例えば、ブロック群44の現在の書き込み先ブロックBLK47)にコピーするためのコピー要求(コピーコマンド)をフラッシュストレージデバイス3に送出する。また、ホスト2がブロックBLK31内に格納されている別の有効データ部がもはや不要であると判定した場合、ホスト2は、この有効データ部を無効化対象データ部として指定する無効化要求(トリムコマンド)をフラッシュストレージデバイス3に送出する。
また同様に、ブロック群44において、例えば、ブロックBLK41がライトデータで満たされてからの経過時間がブロック群44に対応する期間(1ヶ月)を超えた場合、コントローラ4は、ブロックBLK41内に格納されている有効データ部それぞれのLBAのリスト、またはブロックBLK41内に格納されている全てのデータ部それぞれのLBAのリストをホスト2に通知する。
図10は、データが格納されるブロック群を短いライフタイムを有するデータを格納するためのブロック群から長いライフタイムを有するデータを格納するためのブロック群に変更する動作を説明するための図である。
図10では、各有効データ部の格納先ブロック群がブロック群41、ブロック群42、ブロック群43、ブロック群44の順序で変更される場合が想定されている。
まず、グループ#1に対応する期間(1日)に分類された各ライトデータ部は、グループ#1に対応するブロック群41の現在の書き込み先ブロックに書き込まれる。この現在の書き込み先ブロックがライトデータで満たされると、この現在の書き込み先ブロックはブロック群41のアクティブブロックとなる。また、ブロック群41用の新たな書き込み先ブロックが割り当てられ、グループ#1に対応する期間(1日)に分類された後続の各ライトデータ部は、ブロック群41用の新たな書き込み先ブロックに書き込まれる。
したがって、ブロック群41の各アクティブブロック(ブロックBLK1〜BLK7)はグループ#1に対応する期間(1日)に分類されたデータを格納している。
ブロック群41に属し且つライトデータで満たされてからの経過時間が1日を超えたブロック内の各有効データはコピー候補となる。ホスト2によってこれら有効データ部の新たなライフタイムが再推定される。これら有効データ部の再推定されたライフタイムが3日である場合、これら有効データ部(グループ#1の旧データ)はブロック群42の現在の書き込み先ブロックにコピーされる。
したがって、ブロック群42の各ブロック(ブロックBLK21〜BLK26)はグループ#1の旧データを格納している。
ブロック群42に属し且つライトデータで満たされてからの経過時間が3日を超えたブロック内の各有効データはコピー候補となる。ホスト2によってこれら有効データ部の新たなライフタイムが再推定される。これら有効データ部の再推定されたライフタイムが7日である場合、これら有効データ部(グループ#2の旧データ)はブロック群43の現在の書き込み先ブロックにコピーされる。
したがって、ブロック群43の各ブロック(ブロックBLK31〜BLK34)はグループ#2の旧データを格納している。
ブロック群43に属し且つライトデータで満たされてからの経過時間が7日を超えたブロック内の各有効データはコピー候補となる。ホスト2によってこれら有効データ部の新たなライフタイムが再推定される。これら有効データ部の再推定されたライフタイムが1ヶ月である場合、これら有効データ部(グループ#3の旧データ)はブロック群44の現在の書き込み先ブロックにコピーされる。
したがって、ブロック群44の各ブロック(ブロックBLK41〜BLK47)はグループ#3の旧データを格納している。
図11は、長いライフタイムを有するデータ用に消耗度が小さいブロックを割り当て、短いライフタイムを有するデータ用に消耗度が大きいブロックを割り当てる動作の手順と、書き込むべきデータのライフタイムに基づいてプログラム動作の精度を変更する動作の手順を示すフローチャートである。
NAND型フラッシュメモリ5の各ブロックのデータ保持期間(データリテンションピリオド)は、通常、そのブロックの書き換え回数(「プログラム/イレーズサイクルの数」)に依存する。書き換え回数の少ないブロックは比較的消耗度が小さいので、データを比較的長い期間正常に格納し続けることができる。一方、書き換え回数の多いブロックは比較的消耗度が大きいので、データを正常に格納し続ける期間であるデータ保持期間は比較的短くなる場合がある。
そこで、コントローラ4は、NAND型フラッシュメモリ5内のフリーブロックそれぞれの書き換え回数(「プログラム/イレーズサイクルの数」とも称する)に基づいて、NAND型フラッシュメモリ5内のフリーブロックそれぞれを、第1の消耗度を有する第1のフリーブロックグループ(消耗レベル1のグループ)と、第1の消耗度よりも大きい第2の消耗度を有する第2のフリーブロックグループ(消耗レベル2のグループ)と、第2の消耗度よりも大きい第3の消耗度を有する第3のフリーブロックグループ(消耗レベル3のグループ)と、第3の消耗度よりも大きい第4の消耗度を有する第4のフリーブロックグループ(消耗レベル4のグループ)に分類する(ステップS21)。
コントローラ4は、最も消耗レベルが小さいグループ(消耗レベル1のグループ)に属するフリーブロックを、ライフタイムが1ヶ月であるデータを格納するためのブロック群44用の書き込み先ブロックとして割り当てる(ステップS22)。
コントローラ4は、消耗レベル2のグループに属するフリーブロックを、ライフタイムが7日であるデータを格納するためのブロック群43用の書き込み先ブロックとして割り当てる(ステップS23)。
コントローラ4は、消耗レベル3のグループに属するフリーブロックを、ライフタイムが3日であるデータを格納するためのブロック群42用の書き込み先ブロックとして割り当てる(ステップS24)。
コントローラ4は、最も消耗レベルが大きいグループ(消耗レベル4のグループ)に属するフリーブロックを、ライフタイムが1日であるデータを格納するためのブロック群41用の書き込み先ブロックとして割り当てる(ステップS25)。
これにより、複数のブロック群41〜44それぞれが必要する複数のデータ保持期間に合った特性を有する書き込み先ブロックをこれらブロック群41〜44に割り当てることができる。
また、コントローラ4は、必要に応じて、ブロック群毎にプログラム動作を変更することもできる。通常、メモリセルの閾値電圧を目標閾値電圧に精度良く設定するための高精度のプログラム動作が実行された場合には、このメモリセルのデータ保持期間は比較的長くなるが、このプログラム動作に多くの時間がかかる。一方、メモリセルの閾値電圧を荒い精度で目標閾値電圧に設定するための低精度のプログラム動作にかかる時間は短いが、このメモリセルのデータ保持期間は比較的短くなる。
したがって、コントローラ4は、互いに精度が異なる複数種のプログラム動作をブロック群41〜44に適用する。
すなわち、コントローラ4は、ホスト2から受信したライトコマンドのライフタイム情報によって識別される期間が1ヶ月であるか否かを判定する(ステップS26)。
受信したライトコマンドのライフタイム情報によって識別される期間が1ヶ月である場合(ステップS26のYES)、コントローラ4は、高精度のプログラム動作を用いて、このライトコマンドに関連付けられたライトデータをブロック群44用に割り当てられた書き込み先ブロックに書き込む(ステップS27)。
受信したライトコマンドのライフタイム情報によって識別される期間が1ヶ月ではない場合(ステップS26のNO)、コントローラ4は、ホスト2から受信したライトコマンドのライフタイム情報によって識別される期間が7日であるか否かを判定する(ステップS28)。
受信したライトコマンドのライフタイム情報によって識別される期間が7日である場合(ステップS28のYES)、コントローラ4は、中精度のプログラム動作を用いて、このライトコマンドに関連付けられたライトデータをブロック群43用に割り当てられた書き込み先ブロックに書き込む(ステップS29)。
受信したライトコマンドのライフタイム情報によって識別される期間が7日ではない場合(ステップS28のNO)、コントローラ4は、ホスト2から受信したライトコマンドのライフタイム情報によって識別される期間が3日であるか否かを判定する(ステップS30)。
受信したライトコマンドのライフタイム情報によって識別される期間が3日である場合(ステップS30のYES)、コントローラ4は、中精度のプログラム動作を用いて、このライトコマンドに関連付けられたライトデータをブロック群42用に割り当てられた書き込み先ブロックに書き込む(ステップS31)。
受信したライトコマンドのライフタイム情報によって識別される期間が3日ではない場合(ステップS30のNO)、コントローラ4は、ホスト2から受信したライトコマンドのライフタイム情報によって識別される期間が1日であるか否かを判定する(ステップS32)。
受信したライトコマンドのライフタイム情報によって識別される期間が1日である場合(ステップS32のYES)、コントローラ4は、低精度のプログラム動作を用いて、このライトコマンドに関連付けられたライトデータをブロック群41用に割り当てられた書き込み先ブロックに書き込む(ステップS33)。
図12は、フラッシュストレージデバイス3に発行されるライトコマンドを示す。
ライトコマンドは、フラッシュストレージデバイス3にデータの書き込みを要求するコマンドである。このライトコマンドは、コマンドID、ライフタイム情報、タグ、長さ、ライトバッファアドレス、等を含んでいてもよい。
ライトコマンドは、フラッシュストレージデバイス3にデータの書き込みを要求するコマンドである。このライトコマンドは、コマンドID、ライフタイム情報、タグ、長さ、ライトバッファアドレス、等を含んでいてもよい。
コマンドIDはこのコマンド(ここではこのライトコマンド)の固有の識別子である。ライフタイム情報は、書き込まれるべきライトデータのライフタイムに対応する期間を識別するための情報である。このライフタイム情報は、叙述したように、ライトデータのライフタイムに対応する期間の時間長を示してもよい。あるいは、このライフタイム情報は、この期間に関連付けられた識別子であってもよい。
タグは、書き込まれるべきライトデータを識別するための識別子である。このタグは、上述したように、LBAのような論理アドレスであってもよいし、ユーザアドレス(例えば、キー・バリュー・ストアのキー、またはこのキーのハッシュ値)であってもよい。
長さは、書き込まれるべきライトデータのサイズを示す。ライトバッファアドレスは、書き込まれるべきライトデータが格納されているホスト2のメモリ(ホストメモリ)内の位置を示す。ライトバッファアドレスは、データポインタとしても参照される。
図13は、フラッシュストレージデバイス3からホスト2に送られるアドレス記録要求を示す。
アドレス記録要求は上述の物理アドレス通知メッセージであり、ライトコマンドに関連付けられたライトデータが書き込まれたNAND型フラッシュメモリ5内の記憶位置(物理記憶位置)を示す物理アドレスをホスト2に通知するために使用される。このアドレス記録要求は、タグ、物理アドレス(ブロックアドレス、オフセット)、長さを含んでいてもよい。
タグは、図12のライトコマンドに含まれていたタグである。物理アドレスは、ライトコマンドに関連付けられたライトデータが書き込まれた物理記憶位置を示す。物理アドレスは、ブロックアドレスとブロック内オフセットとによって表される。長さは、書き込まれたライトデータの長さを示す。
図14は、フラッシュストレージデバイス3に発行されるリードコマンドを示す。
リードコマンドは、フラッシュストレージデバイス3にデータの読み出しを要求するコマンドである。このリードコマンドは、コマンドID、物理アドレス、長さ、リードバッファアドレスを含んでいてもよい。
リードコマンドは、フラッシュストレージデバイス3にデータの読み出しを要求するコマンドである。このリードコマンドは、コマンドID、物理アドレス、長さ、リードバッファアドレスを含んでいてもよい。
コマンドIDはこのコマンド(ここではこのリードコマンド)の固有の識別子である。物理アドレスは、読み出されるべきデータが格納されている物理記憶位置を示す。物理アドレスは、ブロックアドレスとブロック内オフセットとによって表される。長さは、読み出されるべきデータのサイズを示す。リードバッファアドレスは、読み出されたデータが転送されるべきホストメモリ内の位置を示す。
図15は、フラッシュストレージデバイス3に発行されるコピーコマンドを示す。
コピーコマンドは、NAND型フラッシュメモリ5に既に書き込まれているデータをNAND型フラッシュメモリ5内の別の記憶位置にコピーすることをフラッシュストレージデバイス3に要求するコマンドである。
コピーコマンドは、NAND型フラッシュメモリ5に既に書き込まれているデータをNAND型フラッシュメモリ5内の別の記憶位置にコピーすることをフラッシュストレージデバイス3に要求するコマンドである。
コピーコマンドは、ホスト2によって指定されたソース物理アドレスを有するコピー元ブロックに含まれるコピー対象データそれぞれをホスト2によって指定されたディスティネーション物理アドレスを有するブロックにコピーするために使用される。
コピーコマンドは、コマンドID、ソース物理アドレス、ディスティネーション物理アドレス、ビットマップを含んでいてもよい。
コマンドIDはこのコピーコマンドの固有の識別子である。ソース物理アドレスは、コピーすべきデータが格納されているコピー元ブロックのアドレスを示す。ディスティネーション物理アドレスは、コピー先ブロックのアドレスを示す。上述したように、ディスティネーション物理アドレスはコピー先ブロック群(ディスティネーションブロック群)の識別子であってもよい。
ビットマップは、コピー元ブロック内の複数の物理記憶位置にそれぞれに対応する複数のビットを含み、“1”のビットの値は対応する物理記憶位置に格納されているデータ部がコピー対象データであることを示し、“0”のビットの値は対応する物理記憶位置に格納されているデータ部がコピー対象データではないことを示す。
例えば、図16に示すように、コピーコマンドに含まれるソース物理アドレスがブロックBLK1の物理アドレスを示し、且つコピーコマンドに含まれるビットマップが“1110000000000000”を示す場合、コントローラ4は、ビットマップ“1110000000000000”に基づいて、ブロックBLK1に格納されているデータ部D1〜D16から、データ部D1、データ部D2、データ部D3だけをコピー対象データとして決定する。
図17は、フラッシュストレージデバイス3に発行されるイレーズコマンドを示す。
イレーズコマンドは、コマンドID、ブロックアドレスを含んでいてもよい。コマンドIDはこのイレーズコマンドの固有の識別子である。ブロックアドレスは、イレーズ対象ブロックのブロックアドレスを示す。
イレーズコマンドは、コマンドID、ブロックアドレスを含んでいてもよい。コマンドIDはこのイレーズコマンドの固有の識別子である。ブロックアドレスは、イレーズ対象ブロックのブロックアドレスを示す。
図18は、フラッシュストレージデバイス3に発行されるトリムコマンドを示す。
トリムコマンドは、あるブロックに格納されている一つ以上の有効データ部を無効化対象データとして指定する上述の無効化要求として使用される。トリムコマンドは、コマンドID、物理アドレス、長さを含んでいてもよい。コマンドIDはこのトリムコマンドの固有の識別子である。物理アドレスは、無効化すべきデータが格納されている最初の物理アドレスを示す。この物理アドレスは、ブロックアドレスとブロック内オフセットとによって表される。長さは、無効化すべきデータのサイズを示す。
トリムコマンドは、あるブロックに格納されている一つ以上の有効データ部を無効化対象データとして指定する上述の無効化要求として使用される。トリムコマンドは、コマンドID、物理アドレス、長さを含んでいてもよい。コマンドIDはこのトリムコマンドの固有の識別子である。物理アドレスは、無効化すべきデータが格納されている最初の物理アドレスを示す。この物理アドレスは、ブロックアドレスとブロック内オフセットとによって表される。長さは、無効化すべきデータのサイズを示す。
図19は、フラッシュストレージデバイス3において実行される書き込み動作の手順を示すフローチャートである。
コントローラ4がホスト2からコマンドを受信した場合、コントローラ4は、この受信したコマンドがライトコマンドであるか否かを判定する(ステップS41)。
この受信したコマンドがライトコマンドである場合(ステップS41のYES)、コントローラ4は、このライトコマンドに含まれるライフタイム情報によって識別される期間が複数の期間(ここでは、1日、3日、7日、1ヶ月)のいずれであるかを判定する(ステップS42、S44、S46、S48)。
ライフタイム情報によって識別される期間が1日である場合(ステップS42のYES)、コントローラ4は、ブロック群41に割り当てられた書き込み先ブロック(つまり、1日用の書き込み先ブロック)に、このライトコマンドに関連付けられたライトデータを書き込む(ステップS43)。そして、コントローラ4は、このライトデータが書き困り多物理記憶位置を示す物理アドレスをアドレス記録要求としてホスト2に送信する(ステップS50)。
ライフタイム情報によって識別される期間が1日である場合(ステップS42のYES)、コントローラ4は、ブロック群41に割り当てられた書き込み先ブロック(つまり、1日用の書き込み先ブロック)に、このライトコマンドに関連付けられたライトデータを書き込む(ステップS43)。そして、コントローラ4は、このライトデータが書き込まれた物理記憶位置を示す物理アドレスをアドレス記録要求としてホスト2に送信する(ステップS50)。
ライフタイム情報によって識別される期間が3日である場合(ステップS44のYES)、コントローラ4は、ブロック群42に割り当てられた書き込み先ブロック(つまり、3日用の書き込み先ブロック)に、このライトコマンドに関連付けられたライトデータを書き込む(ステップS45)。そして、コントローラ4は、このライトデータが書き込まれた物理記憶位置を示す物理アドレスをアドレス記録要求としてホスト2に送信する(ステップS50)。
ライフタイム情報によって識別される期間が7日である場合(ステップS46のYES)、コントローラ4は、ブロック群43に割り当てられた書き込み先ブロック(つまり、7日用の書き込み先ブロック)に、このライトコマンドに関連付けられたライトデータを書き込む(ステップS47)。そして、コントローラ4は、このライトデータが書き込まれた物理記憶位置を示す物理アドレスをアドレス記録要求としてホスト2に送信する(ステップS50)。
ライフタイム情報によって識別される期間が1ヶ月である場合(ステップS48のYES)、コントローラ4は、ブロック群44に割り当てられた書き込み先ブロック(つまり、1ヶ月用の書き込み先ブロック)に、このライトコマンドに関連付けられたライトデータを書き込む(ステップS49)。そして、コントローラ4は、このライトデータが書き込まれた物理記憶位置を示す物理アドレスをアドレス記録要求としてホスト2に送信する(ステップS50)。
図20は、フラッシュストレージデバイス3において実行されるコピー動作および無効化動作の手順を示すフローチャートである。
ブロック群41〜ブロック群44の各々に関して、コントローラ4は、有効データを格納しているブロック(アクティブブロック)のうち、ライトデータで満たされてからの経過時間が対応する期間を超えたブロックを検出する(ステップS51)。
コントローラ4は、検出したブロックに格納されている有効データ部それぞれのLBAのリスト、または検出したブロックに格納されている全てのデータ部それぞれのLBAのリストをホスト2に通知する(ステップS53)。
コントローラ4がホスト2からコピー要求(コピーコマンド)を受信した場合(ステップS53のYES)、コントローラ4は、このコピー要求によって指定される一つ以上のコピー対象データ部を、このコピー要求によって指定されるコピー先ブロック群(例えばコピー先ブロック群の書き込み先ブロック)にコピーする(ステップS54)。
コントローラ4がホスト2から無効化要求(トリムコマンド)を受信した場合(ステップS55のYES)、コントローラ4は、この無効化要求によって指定される一つ以上の無効化対象データ部を無効化する(ステップS56)。
コントローラ4がホスト2からイレーズ要求(イレーズコマンド)を受信した場合(ステップS57のYES)、コントローラ4は、このイレーズ要求によって指定されたブロックのイレーズ動作を実行し、このブロックをフリーブロックとして解放する(ステップS58)。
以上説明したように、本実施形態によれば、ブロック群41〜ブロック群44の各々に関して、コントローラ4は、有効データを格納しているブロック(アクティブブロック)のうち、ライトデータで満たされてからの経過時間が対応する期間を超えたブロックを検出する。例えば、コントローラ4が、有効データ部を格納し且つ第1のブロック群に属するブロックのうち、ライトデータで満たされてからの経過時間が第1のブロック群に対応する第1の期間(例えば1日)を超えた第1のブロックを検出した場合、コントローラ4は、この第1のブロックに格納されている有効データ部それぞれの識別子のリスト(またはこの検出されたブロックに格納されている全てのデータ部それぞれの識別子のリスト)をホスト2に通知する。これにより、この第1のブロックに格納されている各データ部(各有効データ部)の新たなライフタイムを再推定するチャンスをホスト2に与えることができる。そして、第1のブロックに格納されている一つ以上の有効データ部をコピー対象データとして指定し且つ第1の期間(例えば1日)よりも長い第2の期間に対応するデータを格納するための第2のブロック群をコピー先ブロック群として指定する第1のコピー要求をホスト2から受信した場合、コントローラ4は、コピー対象データとして指定された一つ以上の有効データ部を第1のブロックから第2のブロック群にコピーする。これにより、実際のライフタイムが第1の期間(例えば1日)よりも長くなったデータを、第1の期間よりも長い期間に対応するデータを格納するためのブロック群に再格納することが可能となる。
よって、第1のブロックに格納されている全ての有効データ部を第1のブロックに維持し続ける場合に比し、各ブロック内の全てのデータ部がその削除又は更新(書き換え)によって無効化される可能性を高めることが可能となり、これによってフラッシュストレージデバイス3のライトアンプリフィケーションを下げることが可能となる。
このように、本実施形態では、フラッシュストレージデバイス3のライトアンプリフィケーションを下げるために有用な情報をホスト2に提供することができ、これによってフラッシュストレージデバイス3の性能を改善することができる。
なお、本実施形態では、第1のブロックに格納されている有効データ部それぞれの識別子のリスト(またはこの検出されたブロックに格納されている全てのデータ部それぞれの識別子のリスト)をホスト2に通知したが、第1のブロックに格納されている有効データ部それぞれの識別子のリストと一緒に、これら有効データ部それぞれをホスト2に送出してもよい。この場合、ホスト2は、フラッシュストレージデバイス3にコピー要求を送出する代わりに、別のブロック群に再格納すべき有効データ部の新たなライフタイム情報を含むライトコマンドをフラッシュストレージデバイス3に送出してもよい。
また、本実施形態では、不揮発性メモリとしてNAND型フラッシュメモリを例示した。しかし、本実施形態の機能は、例えば、MRAM(Magnetoresistive Random Access Memory)、PRAM(Phase change Random Access Memory)、ReRAM(Resistive Random Access Memory)、又は、FeRAM(Ferroelectric Random Access Memory)のような他の様々な不揮発性メモリにも適用できる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
2…ホスト、3…フラッシュストレージデバイス、4…コントローラ、5…NAND型フラッシュメモリ、21…ライト制御部、22…データ通知部、23…リード制御部、24…コピー制御部、201…ライフタイム推定部。
Claims (13)
- ホストに接続可能なメモリシステムであって、
複数のブロックを含む不揮発性メモリと、
前記不揮発性メモリに電気的に接続され、ライトデータの推定されるライフタイムが属する期間を識別可能なライフタイム情報を含むライトコマンドを前記ホストから受信するように構成されたコントローラとを具備し、
前記コントローラは、
前記受信したライトコマンドの前記ライフタイム情報によって識別される前記期間が第1の期間である場合、前記第1の期間に対応する推定されるライフタイムを有するデータを格納するための第1のブロック群用に割り当てられた第1の書き込み先ブロックに前記ライトデータを書き込み、前記第1の書き込み先ブロックが前記ライトデータで満たされた場合、前記第1の書き込み先ブロックを、有効データ部を格納し且つ前記第1のブロック群に属するブロックとして管理すると共に、前記第1のブロック群用の新たな第1の書き込み先ブロックを割り当て、
前記受信したライトコマンドの前記ライフタイム情報によって識別される前記期間が前記第1の期間よりも長い第2の期間である場合、前記第2の期間に対応する推定されるライフタイムを有するデータを格納するための第2のブロック群用に割り当てられた第2の書き込み先ブロックに前記ライトデータを書き込み、前記第2の書き込み先ブロックが前記ライトデータで満たされた場合、前記第2の書き込み先ブロックを、有効データ部を格納し且つ前記第2のブロック群に属するブロックとして管理すると共に、前記第2のブロック群用の新たな第2の書き込み先ブロックを割り当て、
有効データ部を格納し且つ前記第1のブロック群に属するブロックのうち、前記ライトデータで満されてからの経過時間が前記第1の期間を超えた第1のブロックを検出し、
前記第1のブロックに格納されている有効データ部それぞれを識別可能な識別子のリスト、または前記第1のブロックに格納されている全てのデータ部それぞれを識別可能な識別子のリストを前記ホストに通知し、
前記第1のブロックに格納されている一つ以上の有効データ部をコピー対象データとして指定し且つ前記第2のブロック群をコピー先ブロック群として指定する第1のコピー要求を前記ホストから受信した場合、前記コピー対象データとして指定された前記一つ以上の有効データ部を前記第1のブロックから前記第2のブロック群にコピーするように構成されている、メモリシステム。 - 前記コントローラは、前記第1のブロックに格納されている一つ以上の有効データ部を無効化対象データとして指定する第1の無効化要求を前記ホストから受信した場合、前記無効化対象データとして指定された前記一つ以上の有効データ部を無効化するように構成されている請求項1記載のメモリシステム。
- 前記コントローラは、
前記不揮発性メモリ内のフリーブロックそれぞれの書き換え回数に基づいて、前記不揮発性メモリ内のフリーブロックそれぞれを、第1の消耗度を有する第1のフリーブロックグループと、前記第1の消耗度よりも大きい第2の消耗度を有する第2のフリーブロックグループとに分類し、
前記第1のフリーブロックグループに属するフリーブロックを前記第2のブロック群用の前記第2の書き込み先ブロックとして割り当て、
前記第2のフリーブロックグループに属するフリーブロックを前記第1のブロック群用の前記第2の書き込み先ブロックとして割り当てるように構成されている請求項1記載のメモリシステム。 - 前記コントローラは、
前記受信したライトコマンドの前記ライフタイム情報によって識別される前記期間が前記第2の期間よりも長い第3の期間である場合、前記第3の期間に対応する推定されるライフタイムを有するデータを格納するための第3のブロック群用に割り当てられた第3の書き込み先ブロックに前記ライトデータを書き込み、前記第3の書き込み先ブロックが前記ライトデータで満たされた場合、前記第3の書き込み先ブロックを、有効データ部を格納し且つ前記第3のブロック群に属するブロックとして管理すると共に、前記第3のブロック群用の新たな第3の書き込み先ブロックを割り当てように構成されている請求項1記載のメモリシステム。 - 前記コントローラは、前記第1のブロックに格納されている一つ以上の有効データ部をコピー対象データとして指定し且つ前記第3のブロック群をコピー先ブロック群として指定する第2のコピー要求を前記ホストから受信した場合、前記コピー対象データとして指定された前記一つ以上の有効データ部を前記第1のブロックから前記第3のブロック群にコピーするように構成されている請求項4記載のメモリシステム。
- 前記コントローラは、
有効データ部を格納し且つ前記第2のブロック群に属するブロックのうち、前記ライトデータで満されてからの経過時間が前記第2の期間を超えた第2のブロックを検出し、
前記第2のブロックに格納されている有効データ部それぞれを識別可能な識別子のリスト、または前記第2のブロックに格納されている全てのデータ部それぞれを識別可能な識別子のリストを前記ホストに通知し、
前記第2のブロックに格納されている一つ以上の有効データ部をコピー対象データとして指定し且つ前記第3のブロック群をコピー先ブロック群として指定する第3のコピー要求を前記ホストから受信した場合、前記コピー対象データとして指定された前記一つ以上の有効データ部を前記第2のブロックから前記第3のブロック群にコピーするように構成されている請求項4記載のメモリシステム。 - 前記コントローラは、前記第2のブロックに格納されている一つ以上の有効データ部を無効化対象データとして指定する第2の無効化要求を前記ホストから受信した場合、前記無効化対象データとして指定された前記一つ以上の有効データ部を無効化するように構成されている請求項6記載のメモリシステム。
- 前記コントローラは、
前記第1のブロックに格納されているデータ部分の各々の有効または無効を示すビットマップ情報を参照することによって前記第1のブロックに格納されている有効データ部それぞれを検出し、
前記検出した有効データ部それぞれを識別可能な識別子のリストを前記ホストに通知するように構成されている請求項1記載のメモリシステム。 - 前記ライフタイム情報は前記第1の期間または前記第2の期間の時間長を示す請求項1記載のメモリシステム。
- 前記ライフタイム情報は前記第1の期間に関連付けられた第1の識別子または前記第2の期間に関連付けられた第2の識別子を示す請求項1記載のメモリシステム。
- 複数のブロックを含む不揮発性メモリを制御する制御方法であって、
ライトデータの推定されるライフタイムが属する期間を識別可能なライフタイム情報を含むライトコマンドをホストから受信することと、
前記受信したライトコマンドの前記ライフタイム情報によって識別される前記期間が第1の期間である場合、前記第1の期間に対応する推定されるライフタイムを有するデータを格納するための第1のブロック群用に割り当てられた第1の書き込み先ブロックに前記ライトデータを書き込むことと、
前記第1の書き込み先ブロックが前記ライトデータで満たされた場合、前記第1の書き込み先ブロックを、有効データ部を格納し且つ前記第1のブロック群に属するブロックとして管理すると共に、前記第1のブロック群用の新たな第1の書き込み先ブロックを割り当てることと、
前記受信したライトコマンドの前記ライフタイム情報によって識別される前記期間が前記第1の期間よりも長い第2の期間である場合、前記第2の期間に対応する推定されるライフタイムを有するデータを格納するための第2のブロック群用に割り当てられた第2の書き込み先ブロックに前記ライトデータを書き込むことと、
前記第2の書き込み先ブロックが前記ライトデータで満たされた場合、前記第2の書き込み先ブロックを、有効データ部を格納し且つ前記第2のブロック群に属するブロックとして管理すると共に、前記第2のブロック群用の新たな第2の書き込み先ブロックを割り当てることと、
有効データ部を格納し且つ前記第1のブロック群に属するブロックのうち、前記ライトデータで満されてからの経過時間が前記第1の期間を超えた第1のブロックを検出することと、
前記第1のブロックに格納されている有効データ部それぞれを識別可能な識別子のリスト、または前記第1のブロックに格納されている全てのデータ部それぞれを識別可能な識別子のリストを前記ホストに通知することと、
前記第1のブロックに格納されている一つ以上の有効データ部をコピー対象データとして指定し且つ前記第2のブロック群をコピー先ブロック群として指定する第1のコピー要求を前記ホストから受信した場合、前記コピー対象データとして指定された前記一つ以上の有効データ部を前記第1のブロックから前記第2のブロック群にコピーすることとを具備する制御方法。 - 前記第1のブロックに格納されている一つ以上の有効データ部を無効化対象データとして指定する第1の無効化要求を前記ホストから受信した場合、前記無効化対象データとして指定された前記一つ以上の有効データ部を無効化することをさらに具備する請求項11記載の制御方法。
- 前記不揮発性メモリ内のフリーブロックそれぞれの書き換え回数に基づいて、前記不揮発性メモリ内のフリーブロックそれぞれを、第1の消耗度を有する第1のフリーブロックグループと、前記第1の消耗度よりも大きい第2の消耗度を有する第2のフリーブロックグループとに分類することと、
前記第1のフリーブロックグループに属するフリーブロックを前記第2のブロック群用の前記第2の書き込み先ブロックとして割り当てることと、
前記第2のフリーブロックグループに属するフリーブロックを前記第1のブロック群用の前記第2の書き込み先ブロックとして割り当てることとをさらに具備する請求項11記載の制御方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019157078A JP2021033945A (ja) | 2019-08-29 | 2019-08-29 | メモリシステムおよび制御方法 |
US16/815,547 US11301171B2 (en) | 2019-08-29 | 2020-03-11 | Memory system with controller to write data to memory based on lifetime information in write command |
US17/684,647 US11720288B2 (en) | 2019-08-29 | 2022-03-02 | Memory system with controller to write data to memory based on lifetime information in write command |
US18/337,315 US20230333779A1 (en) | 2019-08-29 | 2023-06-19 | Memory system with controller to write data to memory based on lifetime information in write command |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019157078A JP2021033945A (ja) | 2019-08-29 | 2019-08-29 | メモリシステムおよび制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2021033945A true JP2021033945A (ja) | 2021-03-01 |
Family
ID=74678544
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019157078A Pending JP2021033945A (ja) | 2019-08-29 | 2019-08-29 | メモリシステムおよび制御方法 |
Country Status (2)
Country | Link |
---|---|
US (3) | US11301171B2 (ja) |
JP (1) | JP2021033945A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11861197B2 (en) | 2021-06-17 | 2024-01-02 | Kioxia Corporation | Memory system and information processing system |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9229854B1 (en) * | 2013-01-28 | 2016-01-05 | Radian Memory Systems, LLC | Multi-array operation support and related devices, systems and software |
KR102289919B1 (ko) | 2014-04-15 | 2021-08-12 | 삼성전자주식회사 | 스토리지 컨트롤러, 스토리지 장치, 스토리지 시스템 및 상기 스토리지 컨트롤러의 동작 방법 |
JP2016170583A (ja) | 2015-03-12 | 2016-09-23 | 株式会社東芝 | メモリシステムおよび情報処理システム |
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 |
US20170242625A1 (en) * | 2016-02-24 | 2017-08-24 | Samsung Electronics Co., Ltd. | Apparatus for ssd performance and endurance improvement |
JP2018160195A (ja) | 2017-03-23 | 2018-10-11 | 東芝メモリ株式会社 | メモリシステムおよび不揮発性メモリの制御方法 |
US11048624B2 (en) * | 2017-04-25 | 2021-06-29 | Samsung Electronics Co., Ltd. | Methods for multi-stream garbage collection |
US10496297B2 (en) | 2017-11-21 | 2019-12-03 | Micron Technology, Inc. | Data categorization based on invalidation velocities |
KR20190082513A (ko) * | 2018-01-02 | 2019-07-10 | 에스케이하이닉스 주식회사 | 컨트롤러 및 그것의 동작방법 |
US10949126B2 (en) * | 2019-07-25 | 2021-03-16 | ScaleFlux, Inc. | Solid-state storage device speed performance and endurance through host-side data classification and embedded write caching |
-
2019
- 2019-08-29 JP JP2019157078A patent/JP2021033945A/ja active Pending
-
2020
- 2020-03-11 US US16/815,547 patent/US11301171B2/en active Active
-
2022
- 2022-03-02 US US17/684,647 patent/US11720288B2/en active Active
-
2023
- 2023-06-19 US US18/337,315 patent/US20230333779A1/en active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11861197B2 (en) | 2021-06-17 | 2024-01-02 | Kioxia Corporation | Memory system and information processing system |
Also Published As
Publication number | Publication date |
---|---|
US20230333779A1 (en) | 2023-10-19 |
US11301171B2 (en) | 2022-04-12 |
US11720288B2 (en) | 2023-08-08 |
US20220188039A1 (en) | 2022-06-16 |
US20210064287A1 (en) | 2021-03-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11709597B2 (en) | Memory system and method for controlling nonvolatile memory | |
US11669444B2 (en) | Computing system and method for controlling storage device | |
US20200319966A1 (en) | Memory system for controlling nonvolatile memory | |
US11467955B2 (en) | Memory system and method for controlling nonvolatile memory | |
CN109726139B (zh) | 存储器系统及控制方法 | |
CN114115747B (zh) | 存储器系统及控制方法 | |
JP7358594B2 (ja) | メモリシステム | |
JP6785204B2 (ja) | メモリシステムおよび制御方法 | |
JP7353934B2 (ja) | メモリシステムおよび制御方法 | |
JP2021033849A (ja) | メモリシステムおよび制御方法 | |
JP7392080B2 (ja) | メモリシステム | |
JP2021034091A (ja) | メモリシステムおよび制御方法 | |
US20230333779A1 (en) | Memory system with controller to write data to memory based on lifetime information in write command | |
JP7013546B2 (ja) | メモリシステム | |
JP7204020B2 (ja) | 制御方法 | |
JP7490714B2 (ja) | メモリシステムおよび制御方法 | |
JP2022019787A (ja) | メモリシステムおよび制御方法 |