JP2020123038A - メモリシステムおよび制御方法 - Google Patents

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

Info

Publication number
JP2020123038A
JP2020123038A JP2019013220A JP2019013220A JP2020123038A JP 2020123038 A JP2020123038 A JP 2020123038A JP 2019013220 A JP2019013220 A JP 2019013220A JP 2019013220 A JP2019013220 A JP 2019013220A JP 2020123038 A JP2020123038 A JP 2020123038A
Authority
JP
Japan
Prior art keywords
write
data
block
host
read
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2019013220A
Other languages
English (en)
Other versions
JP7155028B2 (ja
Inventor
菅野 伸一
Shinichi Sugano
伸一 菅野
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
Kioxia 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 Kioxia Corp filed Critical Kioxia Corp
Priority to JP2019013220A priority Critical patent/JP7155028B2/ja
Priority to US16/564,412 priority patent/US10929067B2/en
Publication of JP2020123038A publication Critical patent/JP2020123038A/ja
Priority to US17/144,641 priority patent/US11461049B2/en
Priority to US17/898,774 priority patent/US11829648B2/en
Priority to JP2022156211A priority patent/JP7358594B2/ja
Application granted granted Critical
Publication of JP7155028B2 publication Critical patent/JP7155028B2/ja
Priority to US18/484,542 priority patent/US20240036769A1/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
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/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/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

【課題】ホスト側の負担を軽減できるメモリシステムを提供する。【解決手段】メモリシステム3は、ライトデータが書き込まれるべき書き込み先ブロックと、ライトデータが書き込まれるべき、書き込み先ブロック内の書き込み先位置とを決定し、ライトデータの識別子と、書き込み先ブロックのブロックアドレスと、書き込み先ブロック内の書き込み先位置を示すオフセットとをホストに通知する。メモリシステムは、ライトデータをホストのライトバッファから取得し、ライトデータを書き込み先ブロック内の書き込み先位置に書き込む。メモリシステムは、読み出すべき第1のデータの物理アドレスを指定するリードコマンドをホストから受信する。第1のデータの書き込み動作が終了して第1のデータが読み出し可能となる前に、このリードコマンドが受信された場合、メモリシステムは、ホストのライトバッファからこの第1のデータを読み出す。【選択図】図3

Description

本発明の実施形態は、不揮発性メモリを制御する技術に関する。
近年、不揮発性メモリを備えるメモリシステムが広く普及している。このようなメモリシステムの一つとして、NANDフラッシュ技術ベースのソリッドステートドライブ(SSD)が知られている。
データセンターのサーバにおいても、ストレージデバイスとしてSSDが使用されている。
サーバのようなホスト計算機システムにおいて利用されるストレージデバイスにおいては、高いI/O性能が求められている。
このため、最近では、ホストがストレージデバイス内の不揮発性メモリを直接的に制御することを可能にする新たな技術が提案され始めている。
Yiying Zhang, 外, "De-indirection for flash-based SSDs with nameless writes." FAST. 2012, [online], [平成29年9月13日検索], インターネット<URL: https://www.usenix.org/system/files/conference/fast12/zhang.pdf >
しかし、ストレージデバイス内の不揮発性メモリを制御するためのホスト側の負担が増加されると、これによって十分なI/O性能が得られなくなる場合がある。このため、ホスト側の負担を軽減できるようにするための新たな技術の実現が要求される。
本発明が解決しようとする課題は、ホスト側の負担を軽減することができるメモリシステムおよび制御方法を提供することである。
実施形態によれば、ホストに接続可能なメモリシステムは、複数のブロックを含む不揮発性メモリと、前記不揮発性メモリに電気的に接続され、前記不揮発性メモリを制御するように構成されたコントローラとを具備する。前記コントローラは、ライトデータが格納されている前記ホストのライトバッファ内の記憶位置を示す記憶位置情報を指定するライトコマンドを前記ホストから受信する。前記コントローラは、前記ライトデータが書き込まれるべき書き込み先ブロックと、前記ライトデータが書き込まれるべき、前記書き込み先ブロック内の書き込み先位置とを決定する。前記コントローラは、前記ライトデータの識別子と、前記書き込み先ブロックのブロックアドレスと、前記書き込み先ブロック内の前記書き込み先位置を示すオフセットとを前記ホストに通知する。前記コントローラは、前記記憶位置情報に基づいて前記ライトデータを前記ホストのライトバッファから取得し、前記ライトデータを前記書き込み先ブロック内の前記書き込み先位置に書き込む。前記コントローラは、読み出すべき第1のデータが格納されている記憶位置を示す物理アドレスを指定するリードコマンドを前記ホストから受信する。前記コントローラは、前記第1のデータの書き込み動作が既に終了しており前記第1のデータが前記不揮発性メモリから読み出し可能である場合、前記第1のデータを前記不揮発性メモリから読み出す。前記コントローラは、前記第1のデータの書き込み動作が終了して前記第1のデータが読み出し可能となる前に、前記リードコマンドが受信された場合、前記ホストのライトバッファから前記第1のデータを読み出す。
ホストと実施形態に係るメモリシステムとの関係を示すブロック図。 同実施形態のメモリシステムとホストとの間の役割分担を説明するための図。 同実施形態のメモリシステムの構成例を示すブロック図。 同実施形態のメモリシステムに設けられた、NANDインタフェースと複数のNAND型フラッシュメモリチップとの関係を示すブロック図。 複数の物理ブロックの集合によって構築される一つのブロック(スーパーブロック)の構成例を示す図。 同実施形態のメモリシステムに適用されるライトコマンドを説明するための図。 同実施形態のメモリシステムからホストに送られるアドレス記録要求を説明するための図。 同実施形態のメモリシステムに適用されるリードコマンドを説明するための図。 同実施形態のメモリシステムに適用されるQoSドメインクリエートコマンドを説明するための図。 同実施形態のメモリシステムからホストに送られるライトバッファ解放要求を説明するための図。 同実施形態のメモリシステムからホストに送られるアドレス変更要求を説明するための図。 アドレス記録要求およびリードコマンドの各々に含まれる物理アドレスを規定するブロックアドレスおよびオフセットを説明するための図。 スーパーブロックが使用される場合におけるブロックアドレスとオフセットとの関係を説明するための図。 同実施形態のメモリシステムによって管理される複数のQoSドメインを説明するための図。 ホストと同実施形態のメモリシステムとによって実行されるデータ書き込み処理を説明するためのブロック図。 同実施形態のメモリシステムによって実行される、複数回の書き込みステップを含む書き込み動作を説明するための図。 ホストと同実施形態のメモリシステムとによって実行されるデータ書き込み処理およびデータ再書き込み処理を説明するためのブロック図。 ホストと同実施形態のメモリシステムとによって実行されるデータ読み出し処理を説明するためのブロック図。 リードコマンドによって指定されたデータの書き込み動作が終了していない場合に、このデータをホストのライトバッファから読み出すデータ読み出し処理を説明するためのブロック図。 同実施形態のメモリシステムによって管理される、複数のQoSドメインと共通フラッシュブロックプールとの関係を示すブロック図。 同実施形態のメモリシステムによって実行されるデータ読み出し動作の手順を示すフローチャート。 同実施形態のメモリシステムによって実行されるデータ書き込み動作とデータ再書き込み動作の手順を示すフローチャート。
以下、図面を参照して、実施形態を説明する。
まず、図1を参照して、本実施形態に係るメモリシステムとホストとの関係を説明する。
このメモリシステムは、不揮発性メモリにデータを書き込み、不揮発性メモリからデータを読み出すように構成された半導体ストレージデバイスである。このメモリシステムは、NANDフラッシュ技術ベースのフラッシュストレージデバイス3として実現されている。
ホスト(ホストデバイス)2は、複数のフラッシュストレージデバイス3を制御するように構成されている。ホスト2は、複数のフラッシュストレージデバイス3によって構成されるフラッシュアレイをストレージとして使用するように構成された情報処理装置によって実現される。この情報処理装置はパーソナルコンピュータであってもよいし、サーバコンピュータであってもよい。
なお、フラッシュストレージデバイス3は、ストレージアレイ内に設けられる複数のストレージデバイスの一つとして利用されてもよい。ストレージアレイは、サーバコンピュータのような情報処理装置にケーブルまたはネットワークを介して接続されてもよい。ストレージアレイは、このストレージアレイ内の複数のストレージ(例えば複数のフラッシュストレージデバイス3)を制御するコントローラを含む。フラッシュストレージデバイス3がストレージアレイに適用された場合には、このストレージアレイのコントローラが、フラッシュストレージデバイス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ドメイン)をそれぞれアクセスするための複数の識別子として使用される。
本実施形態においては、各ライトコマンドは、書き込まれるべきデータ(ライトデータ)が格納されているホスト2のライトバッファ(WB)404内の記憶位置を示す記憶位置情報を指定する。また、各ライトコマンドは、データ(ライトデータ)が書き込まれるべき領域(QoSドメイン)の識別子(QoSドメインID)を指定することができる。あるQoSドメインIDを指定するライトコマンドをホスト2から受信した場合、フラッシュストレージデバイス3は、複数のQoSドメイン601によって共有される共通ブロック群602のうちの一つのブロックを選択し、この選択したブロックを、このQoSドメインIDを有するQoSドメイン用の書き込み先ブロックとして割り当てる。
ここで、書き込み先ブロックとは、データが書き込まれるべきブロックを意味する。共通ブロック群602は、複数のQoSドメイン601によって共有されるフリーブロックの集合を含む共通フリーブロック群である。
フリーブロックとは、新たな書き込み先ブロックとして再使用(再割り当て)可能な状態(フリー状態)のブロックを意味する。フリーブロックの典型的な例は、有効データを格納していないブロックである。有効データとは、LBAのようなタグに関連付けられている最新のデータを意味する。つまり、ホスト2のLUTから最新のデータとしてリンクされているデータは有効データである。また、無効データとは、LBAのようタグに関連付けられていないデータを意味する。ホスト2のLUTからリンクされていないデータは無効データである。例えば、あるLBAに対応する更新データがフラッシュストレージデバイス3に書き込まれた場合には、このLBAに対応する以前のデータは無効データとなる。
そして、フラッシュストレージデバイス3は、受信されたライトコマンドに関連付けられたデータをホスト2のライトバッファ(WB)404から取得し、このデータをQoSドメイン用に割り当てられた書き込み先ブロックに書き込む。なお、利用可能な書き込み先ブロックが既にこのQoSドメイン用に割り当てられているならば、共通ブロック群602のうちの一つのブロック(フリーブロック)をこのQoSドメイン用の書き込み先ブロックとして割り当てるという上述の動作を行う必要は無い。フラッシュストレージデバイス3は、受信されたライトコマンドに関連付けられたデータを、既に割り当てられているこの書き込み先ブロック内の次の利用可能ページに書き込む。
受信されたライトコマンドに関連付けられたデータが書き込み先ブロックに書き込まれると、フラッシュストレージデバイス3は、このデータのタグと、このデータが書き込まれた不揮発性メモリ内の記憶位置を示す物理アドレス(ブロックアドレス、オフセット)とをホスト2にアドレス記録要求として送出する。ブロックアドレスは、この書き込み先ブロックを識別するための識別子である。通常、不揮発性メモリは複数の不揮発性メモリチップによって構成されるので、あるブロックのブロックアドレスは、不揮発性メモリチップのチップ番号と、このチップ内のブロック番号とによって表されてもよい。オフセットは、この書き込み先ブロック内の記憶位置を示す。
このアドレス記録要求に応じて、ホスト2は、このデータのタグにこの物理アドレス(ブロックアドレス、オフセット)が関連付けられるようにLUTを更新することができる。
各QoSドメインに含まれるブロックの各々について、ホスト2は、各ブロックに格納されているデータが有効データまたは無効データのいずれであるかを、LUTを使用して管理することができる。また、ホスト2は、既にデータが書き込まれている一つのブロックを新たな書き込み先ブロックとして再使用可能な状態(フリーブロック)に遷移させるためのコマンド(リユースコマンド)をフラッシュストレージデバイス3に送信することができる。
図3は、フラッシュストレージデバイス3の構成例を示す。
フラッシュストレージデバイス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.1〜Ch.16が接続されており、16個のチャンネルCh.1〜Ch.16の各々に2つのNAND型フラッシュメモリチップが接続されている場合が例示されている。この場合、チャンネルCh.1〜Ch.16に接続された16個のNAND型フラッシュメモリチップ#1〜#16がバンク#0として編成されてもよく、またチャンネルCh.1〜Ch.16に接続された残りの16個のNAND型フラッシュメモリチップ#17〜#32がバンク#1として編成されてもよい。バンクは、複数のメモリモジュールをバンクインタリーブによって並列動作させるための単位として機能する。図4の構成例においては、16個のチャンネルと、2つのバンクを使用したバンクインタリーブとによって、最大32個のNAND型フラッシュメモリチップを並列動作させることができる。
消去動作は、一つのブロック(物理ブロック)の単位で実行されてもよいし、並列動作可能な複数の物理ブロックの集合を含むブロックグループ(スーパーブロック)の単位で実行されてもよい。一つのブロックグループ(一つのスーパーブロック)は、これに限定されないが、NAND型フラッシュメモリチップ#1〜#32から一つずつ選択される計32個の物理ブロックを含んでいてもよい。なお、NAND型フラッシュメモリチップ#1〜#32の各々はマルチプレーン構成を有していてもよい。例えば、NAND型フラッシュメモリチップ#1〜#32の各々が、2つのプレーンを含むマルチプレーン構成を有する場合には、一つのスーパーブロックは、NAND型フラッシュメモリチップ#1〜#32に対応する64個のプレーンから一つずつ選択される計64個の物理ブロックを含んでいてもよい。
図5には、32個の物理ブロック(ここでは、NAND型フラッシュメモリチップ#1内の物理ブロックBLK2、NAND型フラッシュメモリチップ#2内の物理ブロックBLK3、NAND型フラッシュメモリチップ#3内の物理ブロックBLK7、NAND型フラッシュメモリチップ#4内の物理ブロックBLK4、NAND型フラッシュメモリチップ#5内の物理ブロックBLK6、…、NAND型フラッシュメモリチップ#32内の物理ブロックBLK3)を含む一つのスーパーブロック(SB)が例示されている。
書き込み先ブロックは一つの物理ブロックであってもよいし、一つのスーパーブロックであってもよい。なお、一つのスーパーブロックが一つの物理ブロックのみを含む構成が利用されてもよく、この場合には、一つのスーパーブロックは一つの物理ブロックと等価である。
次に、図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から様々なコマンドを受信する。これらコマンドには、ライトコマンド、リードコマンド、コピーコマンド、イレーズコマンド、リユースコマンド、QoSドメインクリエートコマンド、他の様々なコマンドが含まれる。
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は、ライトデータが格納されているホスト2のライトバッファ内の記憶位置を示す記憶位置情報を指定するライトコマンドをホスト2から受信する。ライト制御部21は、ライトデータが書き込まれるべき書き込み先ブロックと、ライトデータが書き込まれるべき、この書き込み先ブロック内の書き込み先位置とを決定する。そして、このライトデータの書き込み動作を開始する前に、ライト制御部21は、このライトデータの識別子(タグ)と、この決定された書き込み先ブロックのブロックアドレスと、この書き込み先ブロック内の決定された書き込み先位置を示すオフセットとをホスト2に通知する。
ライトデータが書き込まれるべき書き込み先ブロックは一つの物理ブロックであってもよいし、一つのスーパーブロックであってもよい。一つの物理ブロックが書き込み先ブロックとして使用されるケースにおいては、ブロックアドレスは、この物理ブロックを識別するためのブロックアドレスである。このブロックアドレスはチップ番号とこのチップ内のブロック番号とによって表されてもよい。一つのスーパーブロックが書き込み先ブロックとして使用されるケースにおいては、ブロックアドレスは、このスーパーブロックを識別するためのブロックアドレス(スーパーブロックアドレスとも云う)である。フラッシュストレージデバイス3内の全てのスーパーブロックに異なるスーパーブロックアドレスが付与されていてもよい。
オフセットは、書き込み先ブロックの先頭から書き込み先位置までのオフセット、つまり書き込み先ブロックの先頭に対する書き込み先位置のオフセットを示す。書き込み先ブロックの先頭から書き込み先位置までのオフセットのサイズは、あるサイズを有する粒度の倍数で表されてもよい。あるいは、オフセットは、一つのページのページアドレスと、このページ内のオフセットとによって表されてもよい。
ライト制御部21は、記憶位置情報に基づいてライトデータをホスト2のライトバッファから取得する。ライト制御部21は、このライトデータを、この決定された書き込み先ブロックの決定された書き込み先位置に書き込む書き込み動作を実行する。
本実施形態では、ライトコマンドとしては、QoSドメインIDとタグとを指定し物理アドレスを指定しないタイプのライトコマンドが使用されてもよい。
この場合、ライト制御部21は、ライトバッファ内の記憶位置情報とQoSドメインIDとタグとを指定するライトコマンドをホスト2から受信する。タグは、書き込むべきデータ(ユーザデータ)を識別可能な識別子であり、例えば、LBAであってもよいし、あるいはキー・バリュー・ストアのキーであってもよいし、このキーのハッシュ値であってもよい。ライトコマンドを受信した場合、ライト制御部21は、共通ブロック群602のうちの一つのブロックを選択し、選択したブロックを、ライトコマンドによって指定されたQoSドメインIDに対応するQoSドメイン用の書き込み先ブロックとして割り当てる。このQoSドメイン用に割り当てられた書き込み先ブロックが、ライトデータが書き込まれるべき書き込み先ブロックとして決定される。このQoSドメイン用の書き込み先ブロックとして割り当てられるブロックは、物理ブロックであってもよいし、スーパーブロックであってもよい。
ライト制御部21は、共通ブロック群602から、最小プログラム/イレーズサイクルカウントを有するブロック(物理ブロックまたはスーパーブロック)を選択してもよい。これにより、QoSドメイン間でウェアレベリングを実行することができる。利用可能な書き込み先ブロックが既にこのQoSドメイン用に割り当てられているならば、共通ブロック群602のうちの一つのブロックをこのQoSドメイン用の書き込み先ブロックとして割り当てる動作は実行されない。既に割り当てられている書き込み先ブロックが、ライトデータが書き込まれるべき書き込み先ブロックとして決定される。
ライト制御部21は、ページ書き込み順序の制約、およびこの書き込み先ブロック内の不良ページ等を考慮して、ライトデータが書き込まれるべき、この書き込み先ブロック内の位置(書き込み先位置)を決定する。次いで、ライト制御部21は、記憶位置情報に基づいてホスト2のライトバッファからデータ(ライトデータ)を取得し、このライトデータを、この書き込み先ブロックの書き込み先位置に書き込む。この場合、ライト制御部21は、ホスト2からのライトデータのみならず、このライトデータとこのライトデータのタグの双方を書き込み先ブロックに書き込むことができる。
あるQoSドメイン用の書き込み先ブロック全体がデータで満たされると、ライト制御部21は、共通ブロック群602のうちの一つのブロックをこのQoSドメイン用の新たな書き込み先ブロックとして割り当てる。例えば、あるライトコマンドに関連付けられたライトデータの一部分の書き込みによって現在の書き込み先ブロック全体がデータで満たされると、ライト制御部21は、共通ブロック群602のうちの一つのブロックをこのQoSドメイン用の新たな書き込み先ブロックとして割り当て、このライトコマンドに関連付けられたライトデータの残り部分をこの新たな書き込み先ブロックに書き込む。
リード制御部22は、読み出すべきデータが格納されている記憶位置を示す物理アドレスを指定するリードコマンドをホスト2から受信する。このデータの書き込み動作が既に終了しておりこのデータがNAND型フラッシュメモリ5から読み出し可能である場合、リード制御部22は、このデータをNAND型フラッシュメモリ5から読み出し、そしてこの読み出したデータをホスト2に返す。
一方、このデータの書き込み動作が終了してこのデータが読み出し可能となる前に、このリードコマンドが受信された場合には、つまりこのデータがNAND型フラッシュメモリ5から読み出し可能ではない場合には、リード制御部22は、ホスト2のライトバッファからこのデータを読み出し、そしてこの読み出したデータをホスト2に返す。
このように、本実施形態では、あるライトデータの書き込み動作が終了してこのライトデータがNAND型フラッシュメモリ5から読み出し可能となる前に、このライトデータ(このライトデータの一部分または全て)を読み出し対象データとして指定するリードコマンドがホスト2から受信された場合、リード制御部22は、この読み出し対象データをホスト2のライトバッファから読み出す動作と読み出したデータをホスト2に返す動作とを含む読み出し動作を実行する。このように、リードコマンドによって読み出し対象データとして指定されたデータの書き込み動作が終了しておらず、このデータをNAND型フラッシュメモリ5から読み出す事ができない場合には、リード制御部22は、リードエラーをホスト2に返すのでは無く、ホスト2のライトバッファからこのデータを読み出してこのデータをホスト2に返す。
したがって、ホスト2は個々のライトデータがNAND型フラッシュメモリ5から読み出し可能な状態であるか否かを把握するための複雑な処理を行うこと無く、リードすべきデータに対応する物理アドレスを指定するリードコマンドをフラッシュストレージデバイス3に送信するだけで、このデータをフラッシュストレージデバイス3から受け取ることができる。ライトデータそれぞれの物理アドレスは、これらライトデータが実際にNAND型フラッシュメモリ5に書き込まれる前に、フラッシュストレージデバイス3からホスト2に通知される。よって、ホスト2は、各ライトデータの物理アドレスを早いタイミングで知ることができるので、読み出すべきデータが格納されている記憶位置を示す物理アドレスを指定するリードコマンドを効率よく生成することができる。
現代のNAND型フラッシュメモリの多くにおいては、プログラムディスターブを低減するための複雑な書き込み動作が実行される場合が多い。このため、現代のNAND型フラッシュメモリの多くにおいては、たとえブロック内のあるページにデータが書き込まれても、このページに書き込まれたデータは、その書き込み直後には読み出すことができず、このページに後続する1以上のページへのデータ書き込み後に、このページからのデータの読み出しが可能となるケースがある。
NAND型フラッシュメモリにおいては、セルの微細化が進んでおり、セルへのデータ書き込みによって隣接するセルの閾値レベルが変動するというプログラムディスターブが起こり得る。このため、NAND型フラッシュメモリメモリにおいては、プログラムディスターブによる影響を考慮して、あるページ内の各セルへのデータの書き込みによって、その直前の一つ以上のページ内の各セルの閾値レベルを補正するといったプログラム動作が実行される場合がある。補正が完了する前のページからデータをリードすると、本来のデータとは異なる誤ったデータがリードされてしまう。補正を完了するタイミングは使用されるNAND型フラッシュメモリのタイプによって異なる。
また、現代のNAND型フラッシュメモリにおいては、データ書き込み動作が、同じライトデータをNAND型フラッシュメモリに複数回転送することを含む複数回の書き込みステップによって実行されるケースもある。複数回の書き込みステップを含むデータ書き込み動作の例の一つとしては、フォギー・ファイン書き込み動作が挙げられる。
複数回の書き込みステップを含むデータ書き込み動作は、少なくとも、フォギー書き込み動作のような第1段階の書き込み動作とファイン書き込み動作のような第2段階の書き込み動作とを含む。フォギー書き込み動作は各メモリセルの閾値分布を荒く設定する書き込み動作であり、ファイン書き込み動作は各メモリセルの閾値分布を調整する書き込み動作である。さらに、フォギー書き込み動作とファイン書き込み動作との間に、中間の書き込み動作が実行されてもよい。
また、現代のNAND型フラッシュメモリにおいては、データ書き込み動作は、隣接する幾つかのワード線を往復しながら実行される。例えば、2つのワード線を往復するフォギー・ファイン書き込み動作では、(1)1番目のワード線に接続されたメモリセル群に対するフォギー書き込み動作、(2)2番目のワード線に接続されたメモリセル群に対するフォギー書き込み動作、(3)1番目のワード線に接続されたメモリセル群に対するファイン書き込み動作、(4)3番目のワード線に接続されたメモリセル群に対するフォギー書き込み動作、(5)2番目のワード線に接続されたメモリセル群に対するファイン書き込み動作、…、というプログラム順序が適用される。
したがって、現代のNAND型フラッシュメモリにおいては、あるデータを書き込むための書き込み動作の開始から終了までに多くの時間が必要される。
本実施形態では、ライトデータの書き込み動作が終了(例えばフォギー書き込み動作とファイン書き込み動作の双方が終了)してこのライトデータが読み出し可能となる前に、このライトデータを読み出し対象データとして指定するリードコマンドがホスト2から受信された場合には、リード制御部22は、ホスト2のライトバッファからこの読み出し対象データを読み出し、この読み出したデータをホスト2に返す。したがって、ホスト2は、リードすべきデータがNAND型フラッシュメモリ5から読み出し可能であるか否かをチェックする処理およびライトバッファに向けたリード要求とフラッシュストレージデバイス3に向けたリードコマンドを選択的に発行する処理を行わずとも、フラッシュストレージデバイス3に向けたリードコマンドそれぞれを発行するというシンプルな処理を行うだけで、所望のデータをフラッシュストレージデバイス3から受け取ることができる。
コピー制御部23は、ホスト2から受信されるコピーコマンドに応じて、あるQoSドメイン用に割り当てられているあるブロック内に格納されているデータを、このQoSドメイン用のまたは別のQoSドメイン用のブロック(コピー先ブロック)にコピーする。コピー先ブロックは、不揮発性メモリ内に既に書き込まれているデータが書き込まれるべき(コピーされるべき)書き込み先ブロックである。このコピーコマンドは、コピー元QoSドメインのQoSドメインIDと、コピー元ブロックのブロックアドレスと、コピー先QoSドメインのQoSドメインIDとを指定してもよい。コピー元ブロックは一つの物理ブロックであってもよいし、一つのスーパーブロックであってもよい。
また、ホスト2は、所定の管理サイズ(例えば4KB)単位でコピー元ブロック内の各データが有効データまたは無効データのいずれであるかを示す管理データ(マップデータ)をフラッシュストレージデバイス3に送信することができる。このマップデータはコピーコマンドに含まれていてもよいし、コピーコマンドとは別にホスト2からフラッシュストレージデバイス3に送信されてもよい。コピー制御部23は、ホスト2から受信されるマップデータおよびコピーコマンドに応じて、コピー元ブロック内に格納されている有効データそれぞれを、このQoSドメイン用のまたは別のQoSドメイン用のブロック(コピー先ブロック)にコピーすることができる。
コピー元ブロックからコピー先ブロックへのデータ(有効データ)それぞれのコピーが完了すると、コピー制御部23は、コピーされたデータ毎にこのデータのタグとこのデータのコピー先物理アドレス(ブロックアドレス、オフセット)とをホスト2に通知する。
ライトバッファ解放制御部24は、ライトデータの書き込み動作が終了してこのライトデータがNAND型フラッシュメモリ5から読み出し可能となった後、このライトデータが格納されているホスト2のライトバッファ内の領域を解放するための解放要求をホスト2に送信する。したがって、ライトバッファの管理のためのホスト2の負担を軽減することができる。
NANDインタフェース13は、CPU12の制御の下、NAND型フラッシュメモリ5を制御するように構成されたメモリ制御回路である。
DRAMインタフェース14は、CPU12の制御の下、DRAM6を制御するように構成されたDRAM制御回路である。DRAM6の記憶領域は、ブロック管理テーブル32を格納するために使用される。また、DRAM6の記憶領域は、ライトデータ等を一時的に格納するための内部バッファとしても利用され得る。なお、内部バッファがフラッシュストレージデバイス3内に存在しない、または内部バッファの容量がほぼゼロに近い、というバッファレス構成がフラッシュストレージデバイス3に適用されてもよい。
ブロック管理テーブル32は、NAND型フラッシュメモリ5内の複数のブロックそれぞれに対応する複数の管理テーブルを含む。各管理テーブルは、この管理テーブルに対応するブロックを管理するための管理情報(メタデータ)を格納するために使用される。メタデータは、これに限定されないが、書き換え回数(プログラム/イレーズサイクルの数)、オープン/クローズ状態、書き込み先ページ範囲、等を含んでいてもよい。オープン/クローズ状態は、このブロックがオープン状態またはクローズ状態のいずれであるかを示す。オープン状態は、このブロックが書き込み先ブロックとして使用中の状態を示す。書き込み先ブロックには、ホスト2からのデータが書き込まれるホスト書き込み用の書き込み先ブロックと、不揮発性メモリ内に既に書き込まれているデータのコピー用の書き込み先ブロックとがある。データコピー用の書き込み先ブロックはコピー先ブロックと称される。
クローズ状態は、ブロックがデータで満たされてアクティブブロックとして管理されている状態を示す。書き込み先ページ範囲は、どのページからどのページまでが現在書き込み(プログラム)動作中であるかを示す。
DMAC15は、CPU12の制御の下、ホスト2内のメモリ(ライトバッファ)とDRAM6(内部バッファ)との間のデータ転送を実行する。ホスト2のライトバッファから内部バッファにライトデータを転送すべき場合には、CPU12は、ライトバッファ上の位置を示す転送元アドレス、データサイズ、内部バッファ上の位置を示す転送先アドレスをDMAC15に対して指定する。
ECCエンコード/デコード部16は、NAND型フラッシュメモリ5にデータをライトすべき時、書き込むべきライトデータをエンコード(ECCエンコード)することによってこのデータにエラー訂正コード(ECC)を付加する。NAND型フラッシュメモリ5からデータがリードされた時、ECCエンコード/デコード部16は、リードされたデータに付加されているECCを使用して、このデータのエラー訂正を行う(ECCデコード)。
図6は、フラッシュストレージデバイス3に適用されるライトコマンドを示す。
ライトコマンドは、フラッシュストレージデバイス3にデータの書き込みを要求するコマンドである。このライトコマンドは、コマンドID、QoSドメインID、タグ、長さ、ライトバッファアドレス、等を含んでもよい。
コマンドIDはこのコマンド(このライトコマンド)の固有の識別子である。QoSドメインIDは、データが書き込まれるべきQoSドメインを一意に識別可能な識別子である。あるエンドユーザに対応するアプリケーションからのライト要求に応じてホスト2から送信されるライトコマンドは、このエンドユーザに対応するQoSドメインを指定するQoSドメインIDを含む。
タグは、書き込まれるべきライトデータを識別するための識別子である。このタグは、上述したように、LBAのような論理アドレスであってもよいし、キー・バリュー・ストアのキーであってもよいし、このキーのハッシュ値であってもよい。
長さは、書き込まれるべきライトデータの長さを示す。この長さ(データ長)は、上述の粒度(Grainとしても参照される)の数によって指定されてもよいし、LBAの数によって指定されてもよいし、あるいはバイトによって指定されてもよい。
ライトバッファアドレスは、書き込まれるべきライトデータが格納されているホストメモリ(ホスト2のライトバッファ)内の記憶位置を示す記憶位置情報である。ライトバッファアドレスは、データポインタとしても参照される。
コントローラ4は、ホスト2から受信されるQoSドメインクリエートコマンドに基づいて、QoSドメインクリエートコマンドによって指定された容量を有するQoSドメインを作成することができる。この場合、コントローラ4は、図2の共通ブロック群602のうちの、指定された容量に対応する個数のブロックを、このQoSドメイン用に確保(予約)してもよい。ホスト2がQoSドメインクリエートコマンドを送信する度に、新たなQoSドメインが作成される。
コントローラ4は、共通ブロック群602に加え、各QoSドメインに対応するアクティブブロックリスト(アクティブブロックプール)も管理することができる。
各ブロックの状態は、有効データを格納しているアクティブブロック(クローズ状態のブロック)と、有効データを格納しておらず書き込み先ブロックとして再使用可能なフリーブロックとに大別される。あるQoSドメインにおいては、アクティブブロックである各ブロックは、このQoSドメインに対応するアクティブブロックリストによって管理される。一方、各QoSドメインの各フリーブロックは、共通ブロック群602によって管理される。
あるQoSドメインIDを指定するライトコマンドをホスト2から受信した時、コントローラ4は、共通ブロック群602内の一つのブロック(フリーブロック)を選択し、選択されたブロックを、このQoSドメインに書き込み先ブロックとして割り当てる。さらに、コントローラ4は、この書き込み先ブロック内の位置(書き込み先位置)を決定する。書き込み先ブロック内の書き込み先位置は、ページ書き込み順序の制約および不良ページ等を考慮して決定される。そして、コントローラ4は、ホスト2からのデータを、書き込み先ブロック内の書き込み先位置に書き込む。
この書き込み先ブロック全体がユーザデータで満たされたならば、コントローラ4は、この書き込み先ブロックをこのQoSドメインのアクティブブロックリスト(アクティブブロックプール)に移動する。そして、コントローラ4は、共通ブロック群602内の一つのブロック(フリーブロック)を再び選択し、選択されたブロックをこのQoSドメインに新たな書き込み先ブロックとして割り当てる。
あるQoSドメインに割り当て可能なブロックの数の上限は、このQoSドメインの容量に対応するブロックの個数までに制限される。共通ブロック群602から一つのブロックがこのQoSドメインに割り当てられると、コントローラ4は、このQoSドメインに割り当て可能なブロックの現在の個数を1だけ減らす。このQoSドメインの一つのブロックを指定する上述のリユースコマンドまたはイレーズコマンドによってこのブロックが共通ブロック群602に返却されると、コントローラ4は、このQoSドメインに割り当て可能なブロックの現在の個数を1だけ増やす。
図7は、フラッシュストレージデバイス3からホスト2に送られるアドレス記録要求を示す。
アドレス記録要求は、ライトコマンドに関連付けられたライトデータが書き込まれたNAND型フラッシュメモリ5内の記憶位置(物理記憶位置)を示す物理アドレスをホスト2に通知するために使用される。このアドレス記録要求は、QoSドメインID、タグ、物理アドレス、長さを含んでもよい。
QoSドメインIDは、ライトデータが書き込まれたQoSドメインを識別する識別子である。タグは、図6のライトコマンドに含まれていたタグである。物理アドレスは、ライトコマンドに関連付けられたライトデータが書き込まれた物理記憶位置を示す。物理アドレスは、ブロックアドレスとオフセットとによって表される。長さは、書き込まれたライトデータの長さを示す。
フラッシュストレージデバイス3から受信されるアドレス記録要求に基づいて、ホスト2は、ライトデータが書き込まれた記憶位置を示す物理アドレス(ブロックアドレス、オフセット)がこのライトデータのタグ(例えばLBA)に関連付けられるように、このQoSドメインに対応するLUTを更新することができる。また、ホスト2は、各QoSドメインに対応するLUTの内容に基づいて、各QoSドメインで使用されているブロック毎に有効/無効管理情報を管理することができる。あるブロックに対応する有効/無効管理情報は、このブロックに格納されている複数のデータそれぞれが有効データであるか無効データであるかを示す。
図8は、フラッシュストレージデバイス3に適用されるリードコマンドを示す。
リードコマンドは、フラッシュストレージデバイス3にデータの読み出しを要求するコマンドである。このリードコマンドは、コマンドID、QoSドメインID、物理アドレス、長さ、リードバッファアドレスを含んでもよい。
コマンドIDはこのコマンド(このリードコマンド)の固有の識別子である。QoSドメインIDは、読み出されるべきデータが格納されているQoSドメインを識別する識別子である。物理アドレスは、読み出されるべきデータが格納されている物理記憶位置を示す。物理アドレスは、ブロックアドレスとオフセットとによって表される。このブロックアドレスは、読み出し対象のブロックのブロックアドレスである。オフセットは、読み出し対象のブロック内の読み出し対象の記憶位置を示す。長さは、読み出されるべきデータの長さを示す。リードバッファアドレスは、読み出されたデータが転送されるべきホストメモリ(ホスト2のリードバッファ)内の位置を示す。
図9は、QoSドメインクリエートコマンドを示す。
QoSドメインクリエートコマンドは、QoSドメインを作成するためのコマンドである。このQoSドメインクリエートコマンドは、コマンドID、QoSドメインID、容量を含んでもよい。
コマンドIDはこのコマンド(このQoSドメインクリエートコマンド)の固有の識別子である。QoSドメインIDは、作成すべきQoSドメインの識別子である。容量は、作成すべきQoSドメイン用に確保すべき容量を示す。コントローラ4は、この容量に対応する個数のブロックを共通ブロック群602から確保し、このQoSドメインIDを指定するライトコマンドに応じて、この確保されたブロックのうちの一つのブロックをこのQoSドメイン用の書き込み先ブロックとして割り当てる。
図10は、フラッシュストレージデバイス3からホスト2に送られるライトバッファ解放要求を示す。
ライトバッファ解放要求は、NAND型フラッシュメモリ5への書き込みが終了することによってNAND型フラッシュメモリ5から読み出し可能になったデータが格納されているライトバッファ内の領域を解放するために使用される。ライトバッファ解放要求は、ライトコマンドIDを含んでいてもよい。ライトコマンドIDは、解放可能なライトデータに対応するライトコマンドの識別子である。例えば、あるライトコマンドに関連付けられたライトデータの書き込みが終了した場合、フラッシュストレージデバイス3のコントローラ4は、このライトコマンドの識別子(コマンドID)を含むライトバッファ解放要求をホスト2に送信してもよい。あるいは、ライトバッファ解放要求は、ライトバッファ内の解放可能領域を示す記憶位置情報を含んでいてもよい。
図11は、フラッシュストレージデバイス3からホスト2に送られるアドレス変更要求を示す。
コントローラ4は、ライトデータの書き込み動作が失敗した場合、現在の書き込み先ブロックとは異なる別のブロック内の書き込み先位置にこのライトデータを書き込む再書き込み動作を実行する。アドレス変更要求は、ホスト2に既に通知したライトデータの物理アドレスを新たな物理アドレスに変更するために使用される。
アドレス変更要求は、QoSドメインID、タグ、旧物理アドレス、新物理アドレスを含んでいてもよい。QoSドメインIDは、データが書き込まれるべきQoSドメインの識別子である。タグは、書き込まれるべきデータの識別子である。旧物理アドレスは、アドレス記録要求によって既にホスト2に通知された物理記憶位置を示す。旧物理アドレスは、ブロックアドレスおよびオフセットによって表される。新物理アドレスは、再書き込みによってデータが書き込まれた物理記憶位置を示す。新物理アドレスは、ブロックアドレスおよびオフセットによって表される。
フラッシュストレージデバイス3から受信されるアドレス変更要求に基づいて、ホスト2は、再書き込み動作によってライトデータが書き込まれた記憶位置を示す新物理アドレス(ブロックアドレス、オフセット)がこのライトデータのタグ(例えばLBA)に関連付けられるように、このQoSドメインに対応するLUTを更新することができる。
図12は、物理アドレスを規定するブロックアドレスおよびオフセットを示す。
ブロックアドレスはある一つのブロックBLKを指定する。各ブロックBLKは、図12に示されているように、複数のページ(ここでは、ページ0〜ページn)を含む。
ページサイズ(各ページのユーザデータ格納領域)が16Kバイトであり、粒度(Grain)が4KBのサイズであるケースにおいては、このブロックBLKは、4×(n+1)個の領域に論理的に分割される。
オフセット+0はページ0の最初の4KB領域を示し、オフセット+1はページ0の2番目の4KB領域を示し、オフセット+2はページ0の3番目の4KB領域を示し、オフセット+3はページ0の4番目の4KB領域を示す。
オフセット+4はページ1の最初の4KB領域を示し、オフセット+5はページ1の2番目の4KB領域を示し、オフセット+6はページ1の3番目の4KB領域を示し、オフセット+7はページ1の4番目の4KB領域を示す。
例えば、あるLBA(LBAx)を指定するライトコマンドに対応する4KバイトデータをブロックBLKのオフセット+0に対応する位置に書き込むことを決定した場合には、コントローラ4は、タグ(=LBAx)、ブロック番号(=BLK)、オフセット(=+0)、長さ(=1)をアドレス記録要求としてホスト2に返してもよい。
また、あるLBA(LBAx)を指定するライトコマンドに対応する8KバイトデータをブロックBLKのオフセット+0に、あるLBA(LBAy)を指定するライトコマンドに対応する8KバイトデータをブロックBLKのオフセット+2に書き込むことを決定した場合には、コントローラ4は、タグ(=LBAx)、ブロックアドレス(=BLK)、オフセット(=+0)、長さ(=2)、タグ(=LBAy)、ブロックアドレス(=BLK)、オフセット(=+2)、長さ(=2)をアドレス記録要求としてホスト2に返してもよい。あるいは、コントローラ4は、最小書き込み単位(ここでは4KB)毎に、タグと物理アドレス(ブロックアドレス、オフセット)をアドレス記録要求としてホスト2に返してもよい。この場合には、コントローラ4は、タグ(=LBAx)、ブロックアドレス(=BLK)、オフセット(=+0)、タグ(=LBAx+1)、ブロックアドレス(=BLK)、オフセット(=+1)、タグ(=LBAy)、ブロックアドレス(=BLK)、オフセット(=+2)、タグ(=LBAy+1)、ブロックアドレス(=BLK)、オフセット(=+3)をアドレス記録要求としてホスト2に返してもよい。
そして、同じQoSドメインIDを指定するライトコマンドそれぞれに対応するライトデータのサイズの合計がページサイズのような所定サイズになると、コントローラ4は、これらライトデータをホスト2のライトバッファから取得し、これらライトデータをブロックBLKの書き込み先ページに書き込む。
図13は、スーパーブロックが使用されるケースにおけるブロックアドレスとオフセットとの関係を示す。
ここでは、図示を簡単化するために、ある一つのスーパーブロックSB#1が4つのブロックBLK#11、BLK#21、BLK#31、BLK#41から構成されている場合が想定されている。スーパーブロックSB#1のブロックアドレス(スーパーブロックアドレス)はSB#1である。4つのブロックBLK#11、BLK#21、BLK#31、BLK#41は、異なる4個のNAND型フラッシュメモリチップからそれぞれ選択されたブロックであってもよい。
コントローラ4は、ブロックBLK#11のページ0、ブロックBLK#21のページ0、ブロックBLK#31のページ0、ブロックBLK#41のページ0、ブロックBLK#11のページ1、ブロックBLK#21のページ1、ブロックBLK#31のページ1、ブロックBLK#41のページ1、…という順序でデータを書き込む。
オフセット+0はブロックBLK#11のページ0の最初の4KB領域を示し、オフセット+1はブロックBLK#11のページ0の2番目の4KB領域を示し、オフセット+2はブロックBLK#11のページ0の3番目の4KB領域を示し、オフセット+3はブロックBLK#11のページ0の4番目の4KB領域を示す。
オフセット+4はブロックBLK#21のページ0の最初の4KB領域を示し、オフセット+5はブロックBLK#21のページ0の2番目の4KB領域を示し、オフセット+6はブロックBLK#21のページ0の3番目の4KB領域を示し、オフセット+7はブロックBLK#21のページ0の4番目の4KB領域を示す。
同様に、オフセット+12はブロックBLK#41のページ0の最初の4KB領域を示し、オフセット+13はブロックBLK#41のページ0の2番目の4KB領域を示し、オフセット+14はブロックBLK#41のページ0の3番目の4KB領域を示し、オフセット+15はブロックBLK#41のページ0の4番目の4KB領域を示す。
オフセット+16はブロックBLK#11のページ1の最初の4KB領域を示し、オフセット+17はブロックBLK#11のページ1の2番目の4KB領域を示し、オフセット+18はブロックBLK#11のページ1の3番目の4KB領域を示し、オフセット+19はブロックBLK#11のページ1の4番目の4KB領域を示す。
オフセット+20はブロックBLK#21のページ1の最初の4KB領域を示し、オフセット+21はブロックBLK#21のページ1の2番目の4KB領域を示し、オフセット+22はブロックBLK#21のページ1の3番目の4KB領域を示し、オフセット+23はブロックBLK#21のページ1の4番目の4KB領域を示す。
同様に、オフセット+28はブロックBLK#41のページ1の最初の4KB領域を示し、オフセット+29はブロックBLK#41のページ1の2番目の4KB領域を示し、オフセット+30はブロックBLK#41のページ1の3番目の4KB領域を示し、オフセット+31はブロックBLK#41のページ1の4番目の4KB領域を示す。
例えば、あるLBA(LBAx)を指定するライトコマンドに対応する4Kバイトデータをオフセット+8に対応する位置に書き込む場合には、コントローラ4は、タグ(=LBAx)、ブロックアドレス(=SB#1)、オフセット(=+8)、長さ(=1)をアドレス記録要求としてホスト2に返してもよい。
図14は、フラッシュストレージデバイス3によって管理される複数のQoSドメインを示す。
図14では、QoSドメイン#0、QoSドメイン#1、QoSドメイン#2、…、QoSドメイン#n−1が既に作成されている場合が明示されている。図14では、これらQoSドメインは四角によって表されている。あるQoSドメインを表す四角の縦幅は、このQoSドメインの容量を表している。
ユーザアプリケーション#0は、QoSドメイン#0のQoSドメインID#0を含むリード/ライトコマンドを使用して、QoSドメイン#0をリード/ライトアクセスすることができる。同様に、ユーザアプリケーション#n−1は、QoSドメイン#n−1のQoSドメインID#n−1を含むリード/ライトコマンドを使用して、QoSドメイン#n−1をリード/ライトアクセスすることができる。
図15は、ホスト2とフラッシュストレージデバイス3とによって実行されるデータ書き込み処理を示す。
(1)ホスト2においては、ホストFTL701が実行される。このホストFTL701は、LBAのようなタグとフラッシュストレージデバイス3の物理アドレスそれぞれとの間のマッピングをLUTを使用して管理する。あるユーザアプリケーションからのライト要求に応じて、ホストFTL701は、このユーザアプリケーションに対応するQoSドメインのQoSドメインID、タグ、ライトバッファアドレスを指定するライトコマンドをフラッシュストレージデバイス3に送信する。ホストFTL701は、QoSドメインIDのみを指定すればよく、データが書き込まれるべきブロックおよびデータが書き込まれるべきページを指定する必要は無い。このため、ホストFTL701は、フラッシュストレージデバイス3内の不良ブロック、不良ページなどを管理する必要がなくなる。
(2)フラッシュストレージデバイス3のコントローラ4は、複数のQoSドメイン601によって共有される共通ブロック群(フリーブロック群)602のうちの一つのブロックを選択する。コントローラ4は、この選択したブロックを、受信されたライトコマンドによって指定されたQoSドメインIDを有するQoSドメイン用の書き込み先ブロックとして割り当てる。共通ブロック群(フリーブロック群)602においては、不良ブロック以外のフリーブロック群のみが管理されていてもよい。例えば、最小プログラム/イレーズサイクル数を有するブロックが共通ブロック群602から選択されてもよい。そして、コントローラ4は、この書き込み先ブロックをデータが書き込まれるべきブロックとして決定し、さらに、データが書き込まれるべき、この書き込み先ブロック内の書き込み先位置を決定する。なお、上述したように、既にこのQoSドメイン用の書き込み先ブロックが割り当てられているならば、コントローラ4は、この既に割り当てられている書き込み先ブロックをデータが書き込まれるべきブロックとして決定すればよく、共通ブロック群602から一つのブロックをこのQoSドメイン用の書き込み先ブロックとして割り当てる動作を実行する必要は無い。
(3)コントローラ4は、ライトデータのタグと、決定された書き込み先ブロックを示すブロックアドレスと、決定した書き込み先位置を示すオフセットとを含むアドレス記録要求をホスト2に送信して、このライトコマンドに関連付けられたライトデータが書き込まれる物理アドレスをホスト2に通知する。
(4)コントローラ4は、ライトコマンドに含まれるライトバッファアドレスに基づいて、ホスト2のライトバッファ702からライトデータを取得する。ライトバッファ702からのライトデータの取得はDMA転送を使用して実行されてもよい。そして、コントローラ4は、ライトデータを書き込み先ブロック内の書き込み先位置に書き込むデータ書き込み動作を実行する。
(5)ライトデータの書き込みが終了してこのライトデータがNAND型フラッシュメモリ5から読み出し可能になった後、コントローラ4は、このライトデータが格納されているライトバッファ702内の領域を解放するための解放要求をホスト2に送出する。この解放要求は、書き込みが完了したライトデータに対応するライトコマンドの識別子を含んでいてもよい。あるいは、この解放要求は、このライトデータの格納位置を示すライトバッファアドレス、このライトデータの長さを含んでいてもよい。ホスト2は、この解放要求に応じて、このライトデータが格納されているライトバッファ702内の領域を解放する。このライトバッファ702内の解放された領域は他のライトデータの格納等のために利用可能となる。
図16は、同じライトデータをNAND型フラッシュメモリ5に複数回転送することを含む複数回の書き込みステップによって実行されるデータ書き込み動作を示す。
ここでは、4つのワード線を往復する場合のフォギー・ファイン書き込み動作を例示する。また、ここでは、NAND型フラッシュメモリ5が、メモリセル当たりに4ビットのデータを格納するQLC−フラッシュである場合を想定する。NAND型フラッシュメモリ5内の一つの特定の書き込み先ブロック(ここでは、書き込み先ブロックBLK#1)に対するフォギー・ファイン書き込み動作は以下のように実行される。
(1)まず、4ページ(P0〜P3)分のライトデータがページ単位でNAND型フラッシュメモリ5に転送され、この書き込み先ブロックBLK#1内のワード線WL0に接続された複数のメモリセルに、これら4ページ(P0〜P3)分のライトデータを書き込むためのフォギー書き込み動作が実行される。
(2)次いで、次の4ページ(P4〜P7)分のライトデータがこのNAND型フラッシュメモリ5にページ単位で転送され、この書き込み先ブロックBLK#1内のワード線WL1に接続された複数のメモリセルに、これら4ページ(P4〜P7)分のライトデータを書き込むためのフォギー書き込み動作が実行される。
(3)次いで、次の4ページ(P8〜P11)分のライトデータがこのNAND型フラッシュメモリ5にページ単位で転送され、この書き込み先ブロックBLK#1内のワード線WL2に接続された複数のメモリセルに、これら4ページ(P8〜P11)分のライトデータを書き込むためのフォギー書き込み動作が実行される。
(4)次いで、次の4ページ(P12〜P15)分のライトデータがこのNAND型フラッシュメモリ5にページ単位で転送され、この書き込み先ブロックBLK#1内のワード線WL3に接続された複数のメモリセルに、これら4ページ(P12〜P15)分のライトデータを書き込むためのフォギー書き込み動作が実行される。
(5)ワード線WL3に接続された複数のメモリセルに対するフォギー書き込み動作が終了すると、書き込み対象のワード線はワード線WL0に戻り、ワード線WL0に接続された複数のメモリセルに対するファイン書き込み動作の実行が可能となる。そして、ワード線WL0に対するフォギー書き込み動作で使用された4ページ(P0〜P3)分のライトデータと同じ4ページ(P0〜P3)分のライトデータがページ単位でNAND型フラッシュメモリ5に再び転送され、この書き込み先ブロックBLK#1内のワード線WL0に接続された複数のメモリセルに、これら4ページ(P0〜P3)分のライトデータを書き込むためのファイン書き込み動作が実行される。これにより、ページP0〜P3に対するフォギー・ファイン書き込み動作が終了する。この結果、これら4ページ(P0〜P3)分のデータの読み出しが可能となる。
(6)次いで、次の4ページ(P16〜P19)分のライトデータがこのNAND型フラッシュメモリ5にページ単位で転送され、この書き込み先ブロックBLK#1内のワード線WL4に接続された複数のメモリセルに、これら4ページ(P16〜P19)分のライトデータを書き込むためのフォギー書き込み動作が実行される。
(7)ワード線WL4に接続された複数のメモリセルに対するフォギー書き込み動作が終了すると、書き込み対象のワード線はワード線WL1に戻り、ワード線WL1に接続された複数のメモリセルに対するファイン書き込み動作の実行が可能となる。そして、ワード線WL1に対するフォギー書き込み動作で使用された4ページ(P4〜P7)分のライトデータと同じ4ページ(P4〜P7)分のライトデータがページ単位でNAND型フラッシュメモリ5に再び転送され、この書き込み先ブロックBLK#1内のワード線WL1に接続された複数のメモリセルに、これら4ページ(P4〜P7)分のライトデータを書き込むためのファイン書き込み動作が実行される。これにより、ページP4〜P7に対するフォギー・ファイン書き込み動作が終了する。この結果、4ページ(P4〜P7)分のデータの読み出しが可能となる。
(8)次いで、次の4ページ(P20〜P23)分のライトデータがこのNAND型フラッシュメモリ5にページ単位で転送され、この書き込み先ブロックBLK#1内のワード線WL5に接続された複数のメモリセルに、これら4ページ(P20〜P23)分のライトデータを書き込むためのフォギー書き込み動作が実行される。
(9)ワード線WL5に接続された複数のメモリセルに対するフォギー書き込み動作が終了すると、書き込み対象のワード線はワード線WL2に戻り、ワード線WL2に接続された複数のメモリセルに対するファイン書き込み動作の実行が可能となる。そして、ワード線WL2に対するフォギー書き込み動作で使用された4ページ(P8〜P11)分のライトデータと同じ4ページ(P8〜P11)分のライトデータがページ単位でNAND型フラッシュメモリ5に再び転送され、この書き込み先ブロックBLK#1内のワード線WL2に接続された複数のメモリセルに、これら4ページ(P8〜P11)分のライトデータを書き込むためのファイン書き込み動作が実行される。これにより、ページP8〜P11に対するフォギー・ファイン書き込み動作が終了する。この結果、4ページ(P8〜P11)分のデータの読み出しが可能となる。
図17は、ホスト2とフラッシュストレージデバイス3とによって実行されるデータ書き込み処理およびデータ再書き込み処理を示す。
(1)ホストFTL701は、QoSドメインID、タグ、ライトバッファアドレスを指定するライトコマンドをフラッシュストレージデバイス3に送信する。
(2)フラッシュストレージデバイス3のコントローラ4は、複数のQoSドメイン601によって共有される共通ブロック群(フリーブロック群)602のうちの一つのブロックを選択する。コントローラ4は、この選択したブロックを、受信されたライトコマンドによって指定されたQoSドメインIDを有するQoSドメイン用の書き込み先ブロックとして割り当てる。共通ブロック群(フリーブロック群)602においては、不良ブロック以外のフリーブロック群のみが管理されていてもよい。例えば、最小プログラム/イレーズサイクル数を有するブロックが共通ブロック群602から選択されてもよい。そして、コントローラ4は、この書き込み先ブロックをデータが書き込まれるべきブロックとして決定し、さらに、データが書き込まれるべき、この書き込み先ブロック内の書き込み先位置を決定する。
(3)コントローラ4は、ライトデータのタグと、決定された書き込み先ブロックを示すブロックアドレスと、決定した書き込み先位置を示すオフセットとを含むアドレス記録要求をホスト2に送信して、このライトコマンドに関連付けられたライトデータが書き込まれる物理アドレスをホスト2に通知する。
(4)コントローラ4は、ライトコマンドに含まれるライトバッファアドレスに基づいて、ホスト2のライトバッファ702からライトデータを取得する。ライトバッファ702からのライトデータの取得はDMA転送を使用して実行されてもよい。そして、コントローラ4は、ライトデータを書き込み先ブロック内の書き込み先位置に書き込むデータ書き込み動作を実行する。
(5)データ書き込み動作が失敗した場合、コントローラ4は、現在の書き込み先ブロックとは異なる別のブロック内の書き込み先位置にライトデータを書き込む再書き込み動作を行う。この場合、まず、コントローラ4は、ライトデータを書き込むべき書き込み先ブロックと、ライトデータを書き込むべき、この書き込み先ブロック内の書き込み先位置とを決定する。例えば、あるスーパーブロックに属する複数の物理ブロックの一つが現在の書き込み先ブロックとして使用されているケースにおいては、このスーパーブロック内の別の物理ブロックにライトデータが再書き込みされる。例えば、図13のスーパーブロックにおいて、オフセット+4から始まるページ(ブロック#BLK21のページ0)へのライトデータの書き込動作が失敗した場合には、オフセット+8から始まる次のページ(ブロック#BLK31のページ0)が書き込み先となってもよい。この場合、書き込み先ブロックはブロック#BLK21からブロック#BLK31に変更される。
(6)コントローラ4は、書き込みが失敗したライトコマンドに含まれるライトバッファアドレスに基づいて、ホスト2のライトバッファ702からライトデータを再び取得する。ライトバッファ702からのライトデータの取得はDMA転送を使用して実行されてもよい。そして、コントローラ4は、ライトデータを書き込み先ブロック内の書き込み先位置(例えば、ブロック#BLK31のページ0)に書き込むデータ再書き込み動作を実行する。このように、再書き込みは、書き込み動作が失敗したブロックとは異なる新たな書き込み先ブロックに対して実行される。このため、通常、再書き込みは成功する。
(7)コントローラ4は、このライトデータの識別子と、新たな書き込み先ブロックのブロックアドレスと、この新たな書き込み先ブロック内の書き込み先位置を示すオフセットとをアドレス変更要求として通知する。
(8)ライトデータの書き込みが終了してこのライトデータがNAND型フラッシュメモリ5から読み出し可能になった後、コントローラ4は、このライトデータが格納されているライトバッファ702内の領域を解放するための解放要求をホスト2に送出する。
図18は、ホスト2とフラッシュストレージデバイス3とによって実行されるデータ読み出し処理を示す。
(1)ホストFTL701があるユーザアプリケーションからのリード要求を受信した場合、ホストFTL701は、ホストFTL701内のLUTを参照して、このリード要求によって指定されるLBAのようなタグに対応する物理アドレスを取得する。ホストFTL701は、このユーザアプリケーションに対応するQoSドメインのQoSドメインIDと、取得した物理アドレス(ブロックアドレスとオフセット)と、長さと、リードバッファアドレスとを指定するリードコマンドを、フラッシュストレージデバイス3に送信する。
(2)コントローラ4がこのリードコマンドを受信した場合、コントローラ4は、このリードコマンドによって指定されるブロックアドレスとオフセットに基づいて、NAND型フラッシュメモリ5からデータを読み出す。そして、コントローラ4は、この読み出したデータを、DMA転送を使用して、リードバッファアドレスによって指定されるホスト2のリードバッファ703内の位置に転送する。
図19は、リードコマンドによって指定されたデータの書き込み動作が終了していない場合に、このデータをホスト2のライトバッファから読み出すデータ読み出し処理を示す。
(1)ホストFTL701があるユーザアプリケーションからのリード要求を受信した場合、ホストFTL701は、ホストFTL701内のLUTを参照して、このリード要求によって指定されるLBAのようなタグに対応する物理アドレスを取得する。ホストFTL701は、このユーザアプリケーションに対応するQoSドメインのQoSドメインIDと、取得した物理アドレス(ブロックアドレスとオフセット)と、長さと、リードバッファアドレスとを指定するリードコマンドを、フラッシュストレージデバイス3に送信する。
(2)コントローラ4がこのリードコマンドを受信した場合、コントローラ4は、このリードコマンドによって指定されるブロックアドレスとオフセットと長さとに基づいて、リードコマンドによって指定された読み出し対象データの書き込み動作が終了しているか否かを判定する。指定されるブロックアドレスを有するブロックがクローズ状態のブロックであるならば、リードコマンドによって指定された読み出し対象データの書き込み動作が終了していると判定される。
一方、指定されるブロックアドレスを有するブロックがオープン状態のブロックであるならば、このブロックの現在の書き込み先ページ範囲に基づいて、読み出し対象データの書き込み動作が終了しているか否かが判定される。読み出し対象データが格納されているこのブロック内の位置が現在の書き込み先ページ範囲よりも先行するページに属しているならば、読み出し対象データの書き込み動作が終了していると判定される。読み出し対象データが格納されているこのブロック内の位置が現在の書き込み先ページ範囲内のいずれかのページに属しているならば、読み出し対象データの書き込み動作が終了していないと判定される。
読み出し対象データの書き込み動作が終了しておらずこの読み出し対象データをNAND型フラッシュメモリ5から読み出すことができない場合、コントローラ4は、DMA転送を使用して、読み出し対象データをホスト2のライトバッファから読み出す。各オープン状態のブロック(書き込み先ブロック)に書き込まれるライトデータ部それぞれに対応するライトバッファ内の位置は、書き込み先ブロック毎に用意されたライトバッファアドレスリストを使用して管理されてもよい。ある書き込み先ブロックに対応するライトバッファアドレスリストにおいては、この書き込み先ブロックに書き込むべきことが決定されたライトデータ毎に、このライトデータが格納されているライトバッファアドレスとこのライトデータに対応する書き込み先位置を示すオフセットとが記録されてもよい。コントローラ4は、リードコマンド内のブロックアドレスを有する書き込み先ブロックに対応するライトバッファアドレスリストを参照することによって、読み出し対象データが格納されているライトバッファアドレスを特定してもよい。
(3)コントローラ4は、ライトバッファから読み出したデータを、DMA転送を使用して、リードバッファアドレスによって指定されるホスト2のリードバッファ703内の位置に転送する。
図20は、フラッシュストレージデバイス3のコントローラ4によって管理される、複数のQoSドメインと共通フラッシュブロックプールとの関係を示す。
図20においては、図示の簡単化のために、QoSドメイン#0とQoSドメイン#n−1の2つのQoSドメインのみが例示されている。共通フラッシュブロックプール801は、複数のQoSドメインによって共有される上述の共通ブロック群602を管理するためのリストである。
QoSドメイン#0のフラッシュブロックプール#0は、QoSドメイン#0に属するアクティブブロックそれぞれを管理するための上述のアクティブブロックリストである。
コントローラ4がQoSドメイン#0のQoSドメインID#0を指定するライトコマンドを受信した場合、コントローラ4は、QoSドメイン#0用の書き込み先ブロック(オープンブロック)が割り当て済みであるか否かを判定する。
書き込み先ブロック(オープンブロック)が割り当て済みでないならば、コントローラ4は、共通フラッシュブロックプール801の内のフリーブロックをQoSドメイン#0用の書き込み先ブロック(オープンブロック)として割り当てる。そして、コントローラ4は、この書き込み先ブロック内の書き込み先位置を決定し、このライトコマンドに関連付けられたライトデータを、この書き込み先ブロック内のこの書き込み先位置に書き込む。
一方、書き込み先ブロック(オープンブロック)が既に割り当て済みならば、コントローラ4は、この書き込み先ブロック内の書き込み先位置を決定し、このライトコマンドに関連付けられたライトデータを、この書き込み先ブロック内のこの書き込み先位置に書き込む。
この書き込み先ブロック全体がホストからのデータで満たされると、コントローラ4は、この書き込み先ブロックをフラッシュブロックプール#0によって管理するとともに(クローズ)、共通フラッシュブロックプール801の内のフリーブロックをQoSドメイン#0用の新たな書き込み先ブロック(オープンブロック)として割り当てる。
コントローラ4がQoSドメインID#0を示すコピー元QoSドメインと、コピー元ブロックのブロックアドレスと、QoSドメインID#0を示すコピー先QoSドメインとを指定するコピーコマンドを受信した場合、コントローラ4は、QoSドメイン#0用のコピー先ブロック(オープンブロック)が割り当て済みであるか否かを判定する。
コピー先ブロック(オープンブロック)が割り当て済みでないならば、コントローラ4は、共通フラッシュブロックプール801の内のフリーブロックをQoSドメイン#0用のコピー先ブロック(オープンブロック)として割り当てる。そして、コントローラ4は、コピー元ブロックのブロックアドレスに基づいて、フラッシュブロックプール#0内のブロックをコピー元ブロックとして選択し、この選択したコピー元ブロック内のデータをコピー先ブロックにコピーする。上述のマップデータがホスト2から受信されている場合には、このマップデータに基づき、コントローラ4は、選択したコピー元ブロック内の有効データそれぞれをコピー先ブロックにコピーする。
一方、コピー先ブロックが既に割り当て済みならば、コントローラ4は、選択したコピー元ブロック内のデータをこのコピー先ブロックにコピーする。
コピー先ブロック全体がホストからのデータで満たされると、コントローラ4は、このコピー先ブロックをフラッシュブロックプール#0によって管理するとともに(クローズ)、共通フラッシュブロックプール801の内のフリーブロックをQoSドメイン#0用の新たなコピー先ブロック(オープンブロック)として割り当てる。
更新データの書き込みまたはデータコピー動作によってQoSドメイン#0に属する一つのブロック内のデータ全てが無効データになった場合、ホスト2は、このブロックのブロックアドレスを指定するリユースコマンドをフラッシュストレージデバイス3に送信する。
コントローラ4がこのリユースコマンドをホスト2から受信した場合、コントローラ4は、このリユースコマンドによって指定されるフラッシュブロックプール#0内のブロックを共通フラッシュブロックプール801に返却して、このブロックを任意のQoSドメイン用の新たな書き込み先ブロック(またはコピー先ブロック)として再使用可能な状態にする。
なお、更新データの書き込みまたはデータコピー動作によってQoSドメイン#0に属する一つのブロック内のデータ全てが無効データになった場合、ホスト2は、このブロックのブロックアドレスを指定するイレーズコマンドをフラッシュストレージデバイス3に送信してもよい。コントローラ4がこのイレーズコマンドをホスト2から受信した場合、コントローラ4は、このイレーズコマンドによって指定されるフラッシュブロックプール#0内のブロックに対する消去動作を実行し、且つこのブロックを共通フラッシュブロックプール801に返却して、このブロックを任意のQoSドメイン用の新たな書き込み先ブロック(またはコピー先ブロック)として再使用可能な状態にする。
QoSドメイン#n−1においても、コントローラ4は、書き込み先ブロック/コピー先ブロックの割り当て、データで満たされた書き込み先ブロック/コピー先ブロックをフラッシュブロックプール#n−1によって管理する処理、リユースコマンド/イレーズコマンドによって指定されるブロックを共通フラッシュブロックプール801に返却する処理等を実行する。
図21のフローチャートは、データ読み出し動作の手順を示す。
読み出すべきデータが格納されている記憶位置を示す物理アドレス(ブロックアドレス、オフセット)を指定するリードコマンドをホスト2から受信すると(ステップS11のYES)、コントローラ4は、この記憶位置のデータ(読み出し対象データ)の書き込み動作が既に終了しておりこのデータがNAND型フラッシュメモリ5から読み出し可能であるか否かを判定する(ステップS12)。
ステップS12では、コントローラ4は、リードコマンドによって指定されるブロックアドレスを有するブロックがクローズ状態またはオープン状態のいずれであるかを判定する。このブロックがクローズ状態であるならば、読み出し対象データの書き込み動作は既に終了している。したがって、コントローラ4は、読み出し対象データがNAND型フラッシュメモリ5から読み出し可能であると判定する。
一方、このブロックがオープン状態であるならば、コントローラ4は、読み出し対象データが格納されているこのブロック内の位置が、このブロックの現在の書き込み先ページ範囲よりも先行するページに属しているか否かを判定する。読み出し対象データが格納されているこのブロック内の位置が、このブロックの現在の書き込み先ページ範囲よりも先行するページに属しているならば、読み出し対象データの書き込み動作は既に終了している。したがって、コントローラ4は、読み出し対象データがNAND型フラッシュメモリ5から読み出し可能であると判定する。
読み出し対象データが格納されているこのブロック内の位置が、このブロックの現在の書き込み先ページ範囲よりも先行するページに属しておらず、現在の書き込み先ページ範囲内のいずれかのページに属しているならば、読み出し対象データの書き込み動作は終了していない。したがって、コントローラ4は、読み出し対象データがNAND型フラッシュメモリ5から読み出し可能ではないと判定する。
読み出し対象データがNAND型フラッシュメモリ5から読み出し可能である場合には(ステップS12のYES)、コントローラ4は、読み出し対象データをNAND型フラッシュメモリ5から読み出し、読み出したデータをホスト2に返す(ステップS13)。
読み出し対象データがNAND型フラッシュメモリ5から読み出し可能でない場合には(ステップS12のN0)、つまりこの読み出し対象データとして指定されたデータの書き込み動作が終了してこの読み出し対象データが読み出し可能となる前に、この読み出し対象データを指定するリードコマンドが受信された場合には、コントローラ4は、この読み出し対象データをホスト2のライトバッファから読み出し、読み出した読み出し対象データをホスト2に返す(ステップS14)。ある書き込み先ブロックに書き込み中のライトデータそれぞれに対応するライトバッファアドレスは、この書き込み先ブロックに対応するライトバッファアドレスリストに登録されている。したがって、コントローラ4は、リードコマンド内のブロックアドレスによって特定される書き込み先ブロックに対応するライトバッファアドレスリストを参照することにより、読み出し対象データに対応するライトバッファアドレスを取得することができる。
図22のフローチャートは、データ書き込み動作とライトバッファ解放処理の手順を示す。
QoSドメインID、タグ、ライトバッファアドレスを指定するライトコマンドをホスト2から受信すると(ステップS21)、コントローラ4は、共通フラッシュブロックプール801内の一つのブロック(フリーブロック)を選択し、この選択したブロックを、ライトコマンドによって指定されたQoSドメインIDに対応するQoSドメイン用の書き込み先ブロックとして割り当てる。コントローラ4は、この書き込み先ブロックを、ライトコマンドに関連付けられたライトデータが書き込まれるべきブロックとして決定し、さらに、さらに、このライトデータが書き込まれるべき、この書き込み先ブロック内の書き込み先位置を決定する(ステップS22)。既にこのQoSドメイン用の書き込み先ブロックが割り当てられているならば、コントローラ4は、この既に割り当てられている書き込み先ブロックをライトデータが書き込まれるべきブロックとして決定すればよく、共通ブロック群602から一つのブロックをこのQoSドメイン用の書き込み先ブロックとして割り当てる動作を実行する必要は無い。
コントローラ4は、ライトデータのタグと、このライトデータが書き込まれる予定の記憶位置を示す物理アドレスとを、アドレス記録要求としてホスト2に通知する(ステップS23)。このライトデータが書き込まれる予定の記憶位置を示す物理アドレスは、ライトデータが書き込まれるべきブロックとして決定された書き込み先ブロックのブロックアドレスと、この書き込み先ブロック内の決定された書き込み先位置を示すオフセットとを含む。
コントローラ4は、ライトコマンドに含まれるライトバッファアドレスに基づいて、ホスト2のライトバッファからライトデータを取得する。そして、コントローラ4は、このライトデータを書き込み先ブロック内の書き込み先位置に書き込むデータ書き込み動作を実行する(ステップS24)。データ書き込み動作はページ単位で実行される。このため、コントローラ4は、以下の処理を行ってもよい。(1)ホスト2からライトコマンドを受信する度に、コントローラ4は、受信されたライトコマンド内のライトバッファアドレスを、現在の書き込み先ブロックに対応するライトバッファアドレスリストに登録する。(2)コントローラ4は、このライトバッファアドレスに存在するライトデータが書き込まれるべき物理アドレス(ブロックアドレス、オフセット)を決定し、この物理アドレスをアドレス記録要求としてホスト2に通知する。(3)受信されたライトコマンドそれぞれに対応するライトデータの総サイズがページサイズのような所定のサイズに達すると、コントローラ4は、データ書き込み動作を実行する。
ライトデータのデータ書き込み動作が成功で終了してこのライトデータがNAND型フラッシュメモリ(書き込み先ブロック)から読み出し可能になった場合(ステップS25のYES)、コントローラ4は、このライトデータが格納されているライトバッファ内の領域を解放するためのライトバッファ解放要求をホスト2に送信する(ステップS26)。
ライトデータのデータ書き込み動作が失敗した場合(ステップS125のYES)、コントローラ4は、このライトデータをホスト2のライトバッファから再び取得し、そしてこのライトデータを、現在の書き込み先ブロックとは異なる別のブロック内の書き込み先位置に書き込む再書き込み動作を実行する(ステップS27)。コントローラ4は、ライトデータのタグと、この別のブロックのブロックアドレスと、この別のブロック内の書き込み先位置を示すオフセットとを、アドレス変更要求としてホスト2に通知する(ステップS28)。そして、このライトデータの再書き込み動作が終了してこのライトデータがNAND型フラッシュメモリから読み出し可能になった場合、コントローラ4は、このライトデータが格納されているライトバッファ内の領域を解放するためのライトバッファ解放要求をホスト2に送信する(ステップS26)。
以上説明したように、本実施形態によれば、ライトデータそれぞれの物理アドレスは、これらライトデータが実際にNAND型フラッシュメモリ5に書き込まれる前に、フラッシュストレージデバイス3からホスト2に通知される。よって、ホスト2は、各ライトデータの物理アドレスを早いタイミングで知ることができるので、読み出すべきデータが格納されている記憶位置を示す物理アドレスを指定するリードコマンドを効率よく生成することができる。
また、本実施形態では、ライトデータの書き込み動作が終了(例えばフォギー書き込み動作とファイン書き込み動作の双方が終了)してこのライトデータが読み出し可能となる前に、このライトデータを読み出し対象データとして指定するリードコマンドがホスト2から受信された場合には、ホスト2のライトバッファからこの読み出し対象データが読み出される。したがって、ホスト2は、リードすべきデータがNAND型フラッシュメモリ5から読み出し可能であるか否かをチェックする処理およびライトバッファに向けたリード要求とフラッシュストレージデバイス3に向けたリードコマンドを選択的に発行する処理を行わずとも、フラッシュストレージデバイス3に向けたリードコマンドそれぞれを発行するというシンプルな処理を行うだけで、所望のデータをフラッシュストレージデバイス3から受け取ることができる。
よって、データの書き込み/読み出しに関するホスト2側の負担を軽減することができる。
なお、本実施形態では、ライトデータの書き込み動作が終了してこのライトデータがNAND型フラッシュメモリ5から読み出し可能となる前に、このライトデータを読み出し対象データとして指定するリードコマンドがホスト2から受信された場合、コントローラ4は、ライトバッファからこの読み出し対象データを読み出した。しかし、別の実施形態では、ライトデータの書き込み動作が終了してこのライトデータがNAND型フラッシュメモリ5から読み出し可能となる前に、このライトデータを読み出し対象データとして指定するリードコマンドがホスト2から受信された場合、コントローラ4は、ライトバッファからこの読み出し対象データをリードコマンドに対する応答として返すように要求する転送要求をホスト2に送信してもよい。この転送要求は、読み出し対象データが格納されているライトバッファ内の位置を示す記憶位置情報を含んでいてもよい。
この転送要求の受信に応じて、ホスト2のホストFTL701は、ライトバッファから読み出し対象データを読み出し、読み出した読み出し対象データをリードバッファに転送する。そして、ホストFTL701は、転送要求に対するレスポンスをフラッシュストレージデバイス3に返す。コントローラ4は、このレスポンスの受信をこのリードコマンドの実行の完了として扱ってもよい。この場合、このレスポンスが受信されるまで、コントローラ4は、このライトデータが格納されているライトバッファ内の領域の解放を禁止する。このレスポンスの受信の後、コントローラ4は、ライトデータが格納されているライトバッファ内の領域を解放するための解放要求をホスト2に送信する。この場合、コントローラ4は、ライトデータの書き込み動作が終了してライトデータがNAND型フラッシュメモリ5から読み出し可能となり、且つこのレスポンスが受信された後、ライトデータが格納されているライトバッファ内の領域を解放するための解放要求をホスト2に送信してもよい。
また、本実施形態では、不揮発性メモリとして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…ライトバッファ解放制御部。

Claims (12)

  1. ホストに接続可能なメモリシステムであって、
    複数のブロックを含む不揮発性メモリと、
    前記不揮発性メモリに電気的に接続され、前記不揮発性メモリを制御するように構成されたコントローラとを具備し、
    前記コントローラは、
    ライトデータが格納されている前記ホストのライトバッファ内の記憶位置を示す記憶位置情報を指定するライトコマンドを前記ホストから受信し、
    前記ライトデータが書き込まれるべき書き込み先ブロックと、前記ライトデータが書き込まれるべき、前記書き込み先ブロック内の書き込み先位置とを決定し、
    前記ライトデータの識別子と、前記書き込み先ブロックのブロックアドレスと、前記書き込み先ブロック内の前記書き込み先位置を示すオフセットとを前記ホストに通知し、
    前記記憶位置情報に基づいて前記ライトデータを前記ホストのライトバッファから取得し、前記ライトデータを前記書き込み先ブロック内の前記書き込み先位置に書き込み、
    読み出すべき第1のデータが格納されている記憶位置を示す物理アドレスを指定するリードコマンドを前記ホストから受信し、
    前記第1のデータの書き込み動作が既に終了しており前記第1のデータが前記不揮発性メモリから読み出し可能である場合、前記第1のデータを前記不揮発性メモリから読み出し、
    前記第1のデータの書き込み動作が終了して前記第1のデータが読み出し可能となる前に、前記リードコマンドが受信された場合、前記ホストのライトバッファから前記第1のデータを読み出すように構成されている、メモリシステム。
  2. 前記コントローラは、前記ライトデータの書き込み動作が失敗した場合、前記書き込み先ブロックとは異なる別のブロック内の書き込み先位置に前記ライトデータを書き込み、前記ライトデータの識別子と、前記別のブロックのブロックアドレスと、前記別のブロック内の前記書き込み先位置を示すオフセットとを前記ホストにアドレス変更要求として通知するように構成されている請求項1記載のメモリシステム。
  3. 前記コントローラは、前記ライトデータの書き込み動作が失敗した場合、前記ライトデータを前記ライトバッファから再び取得するように構成されている請求項2記載のメモリシステム。
  4. 前記コントローラは、前記ライトデータの書き込み動作が終了して前記ライトデータが読み出し可能となった後、前記ライトデータが格納されている前記ライトバッファ内の領域を解放するための解放要求を前記ホストに送信するように構成されている請求項1記載のメモリシステム。
  5. ホストに接続可能なメモリシステムであって、
    複数のブロックを含む不揮発性メモリと、
    前記不揮発性メモリに電気的に接続され、前記不揮発性メモリを制御するように構成されたコントローラとを具備し、
    前記コントローラは、
    各々が前記複数のブロックの部分集合である複数の領域をアクセスするための複数の識別子ののうちの第1の識別子と、ライトデータの識別子と、前記ライトデータが格納されている前記ホストのライトバッファ内の記憶位置を示す記憶位置情報とを指定するライトコマンドを前記ホストから受信し、
    前記複数の領域によって共有される共通フリーブロック群のうちの一つのブロックを前記第1の識別子に対応する領域用の書き込み先ブロックとして割り当て、前記ライトデータが書き込まれるべき、前記書き込み先ブロック内の書き込み先位置を決定し、
    前記ライトデータの識別子と、前記書き込み先ブロックのブロックアドレスと、前記書き込み先ブロック内の前記書き込み先位置を示すオフセットとを前記ホストに通知し、
    前記記憶位置情報に基づいて前記ライトデータを前記ホストのライトバッファから取得し、前記ライトデータを前記書き込み先ブロック内の前記書き込み先位置に書き込み、
    読み出すべき第1のデータが格納されている記憶位置を示す物理アドレスを指定するリードコマンドを前記ホストから受信し、
    前記第1のデータの書き込み動作が既に終了しており前記第1のデータが前記不揮発性メモリから読み出し可能である場合、前記第1のデータを前記不揮発性メモリから読み出し、
    前記第1のデータの書き込み動作が終了して前記第1のデータが読み出し可能となる前に、前記リードコマンドが受信された場合、前記ホストのライトバッファから前記第1のデータを読み出すように構成されている、メモリシステム。
  6. 前記コントローラは、前記ライトデータの書き込み動作が失敗した場合、前記書き込み先ブロックとは異なる別のブロック内の書き込み先位置に前記ライトデータを書き込み、前記ライトデータの識別子と、前記別のブロックのブロックアドレスと、前記別のブロック内の前記書き込み先位置を示すオフセットとを前記ホストにアドレス変更要求として通知するように構成されている請求項5記載のメモリシステム。
  7. 前記コントローラは、前記ライトデータの書き込み動作が失敗した場合、前記ライトデータを前記ライトバッファから再び取得するように構成されている請求項6記載のメモリシステム。
  8. 前記コントローラは、前記ライトデータの書き込み動作が終了して前記ライトデータが読み出し可能となった後、前記ライトデータが格納されている前記ライトバッファ内の領域を解放するための解放要求を前記ホストに送信するように構成されている請求項5記載のメモリシステム。
  9. 複数のブロックを含む不揮発性メモリを制御する制御方法であって、
    ライトデータが格納されているホストのライトバッファ内の記憶位置を示す記憶位置情報を指定するライトコマンドを前記ホストから受信することと、
    前記ライトデータが書き込まれるべき書き込み先ブロックと、前記ライトデータが書き込まれるべき、前記書き込み先ブロック内の書き込み先位置とを決定することと、
    前記ライトデータの識別子と、前記書き込み先ブロックのブロックアドレスと、前記書き込み先ブロック内の前記書き込み先位置を示すオフセットとを前記ホストに通知することと、
    前記記憶位置情報に基づいて前記ライトデータを前記ホストのライトバッファから取得し、前記ライトデータを前記書き込み先ブロック内の前記書き込み先位置に書き込むことと、
    読み出すべき第1のデータが格納されている記憶位置を示す物理アドレスを指定するリードコマンドを前記ホストから受信することと、
    前記第1のデータの書き込み動作が既に終了しており前記第1のデータが前記不揮発性メモリから読み出し可能である場合、前記第1のデータを前記不揮発性メモリから読み出すことと、
    前記第1のデータの書き込み動作が終了して前記第1のデータが読み出し可能となる前に、前記リードコマンドが受信された場合、前記ホストのライトバッファから前記第1のデータを読み出すこととを具備する制御方法。
  10. 前記ライトデータの書き込み動作が失敗した場合、前記書き込み先ブロックとは異なる別のブロック内の書き込み先位置に前記ライトデータを書き込むことと、
    前記ライトデータの識別子と、前記別のブロックのブロックアドレスと、前記別のブロック内の前記書き込み先位置を示すオフセットとを前記ホストにアドレス変更要求として通知することとをさらに具備する請求項9記載の制御方法。
  11. 前記ライトデータの書き込み動作が失敗した場合、前記ライトデータを前記ライトバッファから再び取得することをさらに具備する請求項10記載の制御方法。
  12. 前記ライトデータの書き込み動作が終了して前記ライトデータが読み出し可能となった後、前記ライトデータが格納されている前記ライトバッファ内の領域を解放するための解放要求を前記ホストに送信することをさらに具備する請求項9記載の制御方法。
JP2019013220A 2019-01-29 2019-01-29 メモリシステムおよび制御方法 Active JP7155028B2 (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
JP2019013220A JP7155028B2 (ja) 2019-01-29 2019-01-29 メモリシステムおよび制御方法
US16/564,412 US10929067B2 (en) 2019-01-29 2019-09-09 Nonvolatile memory system and method for controlling write and read operations in the nonvolatile memory by a host
US17/144,641 US11461049B2 (en) 2019-01-29 2021-01-08 Method for controlling write and read operations in the nonvolatile memory by a host, using an identifier for a region
US17/898,774 US11829648B2 (en) 2019-01-29 2022-08-30 Method for controlling write and read operations in the nonvolatile memory by a host, using an identifier for a region
JP2022156211A JP7358594B2 (ja) 2019-01-29 2022-09-29 メモリシステム
US18/484,542 US20240036769A1 (en) 2019-01-29 2023-10-11 Method for controlling write and read operations in the nonvolatile memory by a host, using an identifier for a region

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019013220A JP7155028B2 (ja) 2019-01-29 2019-01-29 メモリシステムおよび制御方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2022156211A Division JP7358594B2 (ja) 2019-01-29 2022-09-29 メモリシステム

Publications (2)

Publication Number Publication Date
JP2020123038A true JP2020123038A (ja) 2020-08-13
JP7155028B2 JP7155028B2 (ja) 2022-10-18

Family

ID=71733706

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2019013220A Active JP7155028B2 (ja) 2019-01-29 2019-01-29 メモリシステムおよび制御方法
JP2022156211A Active JP7358594B2 (ja) 2019-01-29 2022-09-29 メモリシステム

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2022156211A Active JP7358594B2 (ja) 2019-01-29 2022-09-29 メモリシステム

Country Status (2)

Country Link
US (4) US10929067B2 (ja)
JP (2) JP7155028B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112114753A (zh) * 2020-09-17 2020-12-22 杭州海康威视系统技术有限公司 一种数据写入方法、装置及设备
KR102351237B1 (ko) * 2021-04-29 2022-01-13 삼성전자주식회사 메모리 저장 장치 및 통신 시스템

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7155028B2 (ja) * 2019-01-29 2022-10-18 キオクシア株式会社 メモリシステムおよび制御方法
KR20200125216A (ko) * 2019-04-26 2020-11-04 에스케이하이닉스 주식회사 데이터 저장 장치, 이를 포함하는 전자 장치 및 데이터 저장 장치의 동작 방법
US11157193B2 (en) * 2019-12-16 2021-10-26 Micron Technology, Inc. Coherency issue resolution in logical to physical page translation in a memory sub-system
US11809745B2 (en) 2021-05-13 2023-11-07 Western Digital Technologies, Inc. Multi-fetching data for multi-pass programming within storage devices
US20230136664A1 (en) * 2021-11-02 2023-05-04 SK Hynix Inc. Storage device and electronic device
CN117420966B (zh) * 2023-12-19 2024-05-28 深圳大普微电子股份有限公司 物理地址的编址方法及闪存设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008226040A (ja) * 2007-03-14 2008-09-25 Hitachi Ltd 情報処理装置及びコマンド多重度制御方法
US20160321010A1 (en) * 2015-04-28 2016-11-03 Kabushiki Kaisha Toshiba Storage system having a host directly manage physical data locations of storage device
JP2017162068A (ja) * 2016-03-08 2017-09-14 東芝メモリ株式会社 ストレージシステム、情報処理システムおよび制御方法
JP2018120317A (ja) * 2017-01-24 2018-08-02 富士通株式会社 情報処理装置,制御プログラムおよび情報処理方法
JP2019008730A (ja) * 2017-06-28 2019-01-17 東芝メモリ株式会社 メモリシステム

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6691205B2 (en) * 2001-03-05 2004-02-10 M-Systems Flash Disk Pioneers Ltd. Method for using RAM buffers with simultaneous accesses in flash based storage systems
JP4082913B2 (ja) * 2002-02-07 2008-04-30 株式会社ルネサステクノロジ メモリシステム
CN103492491B (zh) 2011-02-23 2015-09-09 住友电木株式会社 有机硅橡胶系固化性组合物、成型体以及医疗用管
JP5687639B2 (ja) * 2012-02-08 2015-03-18 株式会社東芝 コントローラ、データ記憶装置及びプログラム
US9164888B2 (en) 2012-12-10 2015-10-20 Google Inc. Using a logical to physical map for direct user space communication with a data storage device
US9652376B2 (en) * 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US9092362B1 (en) 2014-03-13 2015-07-28 NXGN Data, Inc. Programmable data write management system and method for operating the same in a solid state drive
US10310984B2 (en) * 2014-10-09 2019-06-04 Hitachi, Ltd. Storage apparatus and storage control method
US20160266802A1 (en) 2015-03-10 2016-09-15 Kabushiki Kaisha Toshiba Storage device, memory system and method of managing data
US20170123991A1 (en) * 2015-10-28 2017-05-04 Sandisk Technologies Inc. System and method for utilization of a data buffer in a storage device
US10642496B2 (en) * 2016-04-01 2020-05-05 Sandisk Technologies Inc. Out of order read transfer with host memory buffer
JP2018160155A (ja) 2017-03-23 2018-10-11 東芝メモリ株式会社 記憶装置
KR102395190B1 (ko) * 2017-07-31 2022-05-06 삼성전자주식회사 호스트와 인터페이스를 수행하는 스토리지 장치, 호스트 및 스토리지 장치의 동작방법
JP2019079464A (ja) * 2017-10-27 2019-05-23 東芝メモリ株式会社 メモリシステムおよび制御方法
JP7048289B2 (ja) * 2017-12-08 2022-04-05 キオクシア株式会社 情報処理装置および方法
JP6967959B2 (ja) * 2017-12-08 2021-11-17 キオクシア株式会社 メモリシステムおよび制御方法
JP2019191909A (ja) * 2018-04-25 2019-10-31 東芝メモリ株式会社 メモリシステムおよび制御方法
JP7143232B2 (ja) * 2019-01-29 2022-09-28 キオクシア株式会社 メモリシステムおよび制御方法
JP7155028B2 (ja) * 2019-01-29 2022-10-18 キオクシア株式会社 メモリシステムおよび制御方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008226040A (ja) * 2007-03-14 2008-09-25 Hitachi Ltd 情報処理装置及びコマンド多重度制御方法
US20160321010A1 (en) * 2015-04-28 2016-11-03 Kabushiki Kaisha Toshiba Storage system having a host directly manage physical data locations of storage device
JP2017162068A (ja) * 2016-03-08 2017-09-14 東芝メモリ株式会社 ストレージシステム、情報処理システムおよび制御方法
JP2018120317A (ja) * 2017-01-24 2018-08-02 富士通株式会社 情報処理装置,制御プログラムおよび情報処理方法
JP2019008730A (ja) * 2017-06-28 2019-01-17 東芝メモリ株式会社 メモリシステム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112114753A (zh) * 2020-09-17 2020-12-22 杭州海康威视系统技术有限公司 一种数据写入方法、装置及设备
KR102351237B1 (ko) * 2021-04-29 2022-01-13 삼성전자주식회사 메모리 저장 장치 및 통신 시스템

Also Published As

Publication number Publication date
US10929067B2 (en) 2021-02-23
JP7155028B2 (ja) 2022-10-18
US20240036769A1 (en) 2024-02-01
US11461049B2 (en) 2022-10-04
JP7358594B2 (ja) 2023-10-10
US11829648B2 (en) 2023-11-28
JP2022173454A (ja) 2022-11-18
US20210124531A1 (en) 2021-04-29
US20200241799A1 (en) 2020-07-30
US20220413770A1 (en) 2022-12-29

Similar Documents

Publication Publication Date Title
JP6785205B2 (ja) メモリシステムおよび制御方法
JP7159069B2 (ja) メモリシステムおよび制御方法
JP7358594B2 (ja) メモリシステム
TWI674502B (zh) 記憶體系統及控制方法
JP7381678B2 (ja) メモリシステム
JP2019185596A (ja) メモリシステムおよび制御方法
JP7353934B2 (ja) メモリシステムおよび制御方法
US11675544B2 (en) Memory system for controlling nonvolatile memory including a plurality of nonvolatile memory dies each including a plurality of physical blocks
JP2021033849A (ja) メモリシステムおよび制御方法
JP2019133391A (ja) メモリシステムおよび制御方法
JP2021033848A (ja) メモリシステムおよび制御方法
JP7392080B2 (ja) メモリシステム
JP2021033847A (ja) メモリシステムおよび制御方法
JP2021033845A (ja) メモリシステムおよび制御方法
JP2021007059A (ja) メモリシステム
JP2019212103A (ja) メモリシステム
JP2023107418A (ja) ストレージデバイスおよびストレージシステム
JP7167295B2 (ja) メモリシステムおよび制御方法
JP7204020B2 (ja) 制御方法
JP2022179798A (ja) メモリシステムおよび制御方法
JP2023136081A (ja) メモリシステムおよび制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210914

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220615

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220621

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220817

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220823

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220906

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221005

R151 Written notification of patent or utility model registration

Ref document number: 7155028

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151