JP7167291B2 - Memory system and control method - Google Patents

Memory system and control method Download PDF

Info

Publication number
JP7167291B2
JP7167291B2 JP2021172380A JP2021172380A JP7167291B2 JP 7167291 B2 JP7167291 B2 JP 7167291B2 JP 2021172380 A JP2021172380 A JP 2021172380A JP 2021172380 A JP2021172380 A JP 2021172380A JP 7167291 B2 JP7167291 B2 JP 7167291B2
Authority
JP
Japan
Prior art keywords
data
write
host
request
storage device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2021172380A
Other languages
Japanese (ja)
Other versions
JP2022009357A (en
Inventor
伸一 菅野
英樹 吉田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kioxia Corp
Original Assignee
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
Priority claimed from JP2017236269A external-priority patent/JP6967959B2/en
Application filed by Kioxia Corp filed Critical Kioxia Corp
Priority to JP2021172380A priority Critical patent/JP7167291B2/en
Publication of JP2022009357A publication Critical patent/JP2022009357A/en
Priority to JP2022166280A priority patent/JP7400053B2/en
Application granted granted Critical
Publication of JP7167291B2 publication Critical patent/JP7167291B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System (AREA)

Description

本発明の実施形態は、不揮発性メモリを制御する技術に関する。 Embodiments of the present invention relate to techniques for controlling non-volatile memory.

近年、不揮発性メモリを備えるメモリシステムが広く普及している。このようなメモリシステムの一つとして、NANDフラッシュ技術ベースのソリッドステートドライブ(SSD)が知られている。 In recent years, memory systems with nonvolatile memories have become widespread. As one of such memory systems, a solid state drive (SSD) based on NAND flash technology is known.

データセンターのサーバにおいても、ストレージデバイスとしてSSDが使用されている。 SSDs are also used as storage devices in servers in data centers.

サーバのようなホスト計算機システムにおいて利用されるストレージデバイスにおいては、高いI/O性能が求められている。 High I/O performance is required for storage devices used in host computer systems such as servers.

このため、最近では、ホストとストレージデバイスとの間の新たなインタフェースが提案され始めている。 For this reason, recently, new interfaces between hosts and storage devices have begun to be proposed.

また、最近のストレージデバイスにおいては、異なる種類のデータを異なる書き込み先ブロックに書き込むことを可能にすることが求められる場合がある。 Also, modern storage devices may be required to allow different types of data to be written to different destination blocks.

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 >Yiying Zhang, et al., "De-indirection for flash-based SSDs with nameless writes." FAST. 2012, [online], [searched on September 13, 2017], Internet<URL: https://www.usenix. org/system/files/conference/fast12/zhang.pdf >

しかし、同時に利用可能な書き込み先ブロックの数が増えると、個々の書き込み先ブロックに書き込むべきライトデータを一時的に格納するために必要なライトバッファの数も増やすことが必要となる。通常、ストレージデバイス内のランダムアクセスメモリの容量は限られているので、ストレージデバイスにとっては、十分な数のライトバッファを用意することは困難な場合がある。このため、実際上、同時に利用可能な書き込み先ブロックの数は制限される結果となる。 However, when the number of write destination blocks that can be used at the same time increases, it becomes necessary to increase the number of write buffers required for temporarily storing write data to be written to each write destination block. Because the amount of random access memory in a storage device is typically limited, it can be difficult for the storage device to provide a sufficient number of write buffers. As a result, in practice, the number of write destination blocks that can be used simultaneously is limited.

本発明が解決しようとする課題は、同時に利用可能な書き込み先ブロックの数を増やすことができるメモリシステムおよび制御方法を提供することである。 The problem to be solved by the present invention is to provide a memory system and control method that can increase the number of write destination blocks that can be used simultaneously.

実施形態によれば、ホストに接続可能なメモリシステムは、複数のブロックを含む不揮発性メモリと、前記不揮発性メモリに電気的に接続され、前記不揮発性メモリを制御するように構成されたコントローラとを具備する。前記コントローラは、書き込むべき第1のデータが格納されている前記ホストのメモリ上のライトバッファ内の位置を示す記憶位置情報を含むライト要求を前記ホストから受信し、前記第1のデータを、複数段階のプログラム動作によって前記不揮発性メモリに書き込む際に、前記複数段階のプログラム動作の各プログラム動作の度に、前記記憶位置情報を含む転送要求を前記ホストに送信することによって前記第1のデータを前記ライトバッファから取得し、前記第1のデータを前記不揮発性メモリに転送し、前記第1のデータを前記複数のブロックのうちの一つの書き込み先ブロックに書き込むAccording to an embodiment, a memory system connectable to a host includes a non-volatile memory including a plurality of blocks, a controller electrically connected to the non-volatile memory and configured to control the non-volatile memory. Equipped with The controller receives from the host a write request including storage location information indicating a location in a write buffer on memory of the host where first data to be written is stored, and writes the first data to a plurality of When writing to the non-volatile memory by the step program operation, the first data is transferred to the host by transmitting a transfer request including the storage location information to the host for each program operation of the plurality of step program operations. Retrieve from the write buffer, transfer the first data to the non-volatile memory, and write the first data to a destination block of the plurality of blocks.

ホストとメモリシステム(フラッシュストレージデバイス)との関係を示すブロック図。3 is a block diagram showing the relationship between the host and memory system (flash storage device); FIG. フラッシュストレージデバイスの構成例を示すブロック図。FIG. 2 is a block diagram showing a configuration example of a flash storage device; フラッシュストレージデバイスにおいて使用される複数のチャンネルと複数のNAND型フラッシュメモリチップとの関係を示すブロック図。2 is a block diagram showing the relationship between multiple channels and multiple NAND flash memory chips used in a flash storage device; FIG. フラッシュストレージデバイスにおいて使用される、あるスーパーブロックの構成例を示す図。FIG. 2 is a diagram showing an example configuration of a superblock used in a flash storage device; FIG. 複数のエンドユーザに対応する複数の書き込み先ブロックと複数のライトバッファ領域との関係を示す図。FIG. 4 is a diagram showing the relationship between multiple write destination blocks corresponding to multiple end users and multiple write buffer areas; フラッシュストレージデバイスとホスト側UWBとの関係とホストとフラッシュストレージデバイスとによって実行されるデータ書き込み処理を説明するためのブロック図。FIG. 3 is a block diagram for explaining the relationship between the flash storage device and UWB on the host side, and data write processing executed by the host and the flash storage device; 複数の書き込み先ブロックと複数のライトバッファ領域(UWB領域)との関係の例を示す図。FIG. 4 is a diagram showing an example of the relationship between a plurality of write destination blocks and a plurality of write buffer areas (UWB areas); フラッシュストレージデバイスとホスト側UWBとの関係とホストとフラッシュストレージデバイスとによって実行されるデータ読み出し処理を説明するためのブロック図。FIG. 3 is a block diagram for explaining the relationship between the flash storage device and UWB on the host side, and the data read processing executed by the host and the flash storage device; フォギー・ファイン書き込みをサポートするフラッシュストレージデバイスとホスト側UWBとの関係とホストとフラッシュストレージデバイスとによって実行されるデータ書き込み処理を説明するためのブロック図。FIG. 4 is a block diagram for explaining the relationship between a flash storage device that supports foggy fine writing and UWB on the host side, and data write processing performed by the host and the flash storage device; フォギー・ファイン書き込みをサポートするフラッシュストレージデバイスとホスト側UWBとの関係とホストとフラッシュストレージデバイスとによって実行されるデータ読み出し処理を説明するためのブロック図。FIG. 3 is a block diagram for explaining the relationship between a flash storage device that supports foggy fine writing and UWB on the host side, and data read processing performed by the host and the flash storage device; ホストとフラッシュストレージデバイスとによって実行されるデータ書き込み処理の手順を示すシーケンス図。FIG. 3 is a sequence diagram showing the procedure of data write processing executed by the host and the flash storage device; フラッシュストレージデバイスによって実行される通知処理の手順を示すフローチャート。4 is a flowchart showing the procedure of notification processing executed by the flash storage device; 転送要求の受信に応じて実行されるホスト側処理の手順を示すフローチャート。4 is a flowchart showing the procedure of host-side processing executed in response to reception of a transfer request; リード要求の受信に応じてフラッシュストレージデバイスによって実行されるデータ読み出し動作の手順を示すフローチャート。4 is a flow chart showing the procedure of a data read operation performed by the flash storage device in response to receiving a read request; データ読み出しのためのホスト側処理の手順を示すフローチャート。4 is a flowchart showing the procedure of host-side processing for reading data; ストリーム書き込みをサポートするフラッシュストレージデバイスとホスト側UWBとの関係とホストとフラッシュストレージデバイスとによって実行されるデータ書き込み処理を説明するためのブロック図。FIG. 4 is a block diagram for explaining the relationship between a flash storage device that supports stream writing and UWB on the host side, and data write processing executed by the host and the flash storage device; 複数のストリームIDとこれらストリームIDに関連付けられた複数の書き込み先ブロックとの関係を示す図。FIG. 4 is a diagram showing the relationship between multiple stream IDs and multiple write destination blocks associated with these stream IDs. ストリーム書き込みをサポートするフラッシュストレージデバイスとホスト側UWBとの関係とホストとフラッシュストレージデバイスとによって実行されるデータ読み出し処理を説明するためのブロック図。FIG. 4 is a block diagram for explaining the relationship between a flash storage device that supports stream writing and UWB on the host side, and data read processing executed by the host and the flash storage device; フォギー・ファイン書き込みをサポートするフラッシュストレージデバイスとホストとによって実行されるデータ書き込み処理の手順を示すシーケンス図。FIG. 4 is a sequence diagram showing the steps of a data write process performed by a flash storage device supporting foggy fine write and a host; ホストの構成例を示すブロック図。4 is a block diagram showing a configuration example of a host; FIG. ホスト内のプロセッサ(CPU)によって実行されるデータ書き込み処理の手順を示すフローチャート。4 is a flowchart showing the procedure of data write processing executed by a processor (CPU) within the host; ホスト内のプロセッサによって実行されるデータ読み出し処理の手順を示すフローチャート。4 is a flowchart showing the procedure of data read processing executed by a processor in the host; ホスト内のプロセッサによって実行されるデータ読み出し処理の別の手順を示すフローチャート。4 is a flowchart showing another procedure of data read processing executed by a processor in the host; ホスト内のプロセッサによって実行されるUWB領域解放処理の手順を示すフローチャート。4 is a flowchart showing the procedure of UWB area release processing executed by a processor in the host;

以下、図面を参照して、実施形態を説明する。 Embodiments will be described below with reference to the drawings.

まず、図1を参照して、ホストとメモリシステムとの関係を説明する。 First, the relationship between the host and the memory system will be described with reference to FIG.

このメモリシステムは、不揮発性メモリにデータを書き込み、不揮発性メモリからデータを読み出すように構成された半導体ストレージデバイスである。このメモリシステムは、NANDフラッシュ技術ベースのフラッシュストレージデバイス3として実現されている。 The memory system is a semiconductor storage device configured to write data to and read data from non-volatile memory. This memory system is implemented as a flash storage device 3 based on NAND flash technology.

ホスト(ホストデバイス)2は、複数のフラッシュストレージデバイス3を制御するように構成されている。ホスト2は、複数のフラッシュストレージデバイス3によって構成されるフラッシュアレイをストレージとして使用するように構成された情報処理装置によって実現される。この情報処理装置はパーソナルコンピュータであとてもよいし、サーバコンピュータであってもよい。 A host (host device) 2 is configured to control a plurality of flash storage devices 3 . The host 2 is realized by an information processing device configured to use a flash array composed of a plurality of flash storage devices 3 as storage. This information processing device may be a personal computer or a server computer.

なお、フラッシュストレージデバイス3は、ストレージアレイ内に設けられる複数のストレージデバイスの一つとして利用されてもよい。ストレージアレイは、サーバコンピュータのような情報処理装置にケーブルまたはネットワークを介して接続されてもよい、ストレージアレイは、このストレージアレイ内の複数のストレージ(例えば複数のフラッシュストレージデバイス3)を制御するコントローラを含む。フラッシュストレージデバイス3がストレージアレイに適用された場合には、このストレージアレイのコントローラが、フラッシュストレージデバイス3のホストとして機能してもよい。 Note that the flash storage device 3 may be used as one of a plurality of storage devices provided within the storage array. The storage array may be connected to an information processing device such as a server computer via a cable or network. including. When the flash storage device 3 is applied to a storage array, the controller of this storage array may serve as the host for the flash storage device 3 .

以下では、サーバコンピュータのような情報処理装置がホスト2として機能する場合を例示して説明する。 A case where an information processing apparatus such as a server computer functions as the host 2 will be described below as an example.

ホスト(サーバ)2と複数のフラッシュストレージデバイス3は、インタフェース50を介して相互接続される(内部相互接続)。この相互接続のためのインタフェース50としては、これに限定されないが、PCI Express(PCIe)(登録商標)、NVM Express(NVMe)(登録商標)、Ethernet(登録商標)、NVMe over Fabrics(NVMeOF)等を使用し得る。 A host (server) 2 and multiple flash storage devices 3 are interconnected via an interface 50 (internal interconnect). The interface 50 for this interconnection may be, but is not limited to, PCI Express (PCIe) (registered trademark), NVM Express (NVMe) (registered trademark), Ethernet (registered trademark), NVMe over Fabrics (NVMeOF), etc. can be used.

ホスト2として機能するサーバコンピュータの典型例としては、データセンター内のサーバコンピュータ(以下、サーバと称する)が挙げられる。 A typical example of a server computer functioning as the host 2 is a server computer (hereinafter referred to as a server) in a data center.

ホスト2がデータセンター内のサーバによって実現されるケースにおいては、このホスト(サーバ)2は、ネットワーク51を介して複数のエンドユーザ端末(クライアント)61に接続されてもよい。ホスト2は、これらエンドユーザ端末61に対して様々なサービスを提供することができる。 In the case where the host 2 is implemented by a server in a data center, this host (server) 2 may be connected to multiple end-user terminals (clients) 61 via a network 51 . The host 2 can provide various services to these end user terminals 61 .

ホスト(サーバ)2によって提供可能なサービスの例には、(1)システム稼働プラットフォームを各クライアント(各エンドユーザ端末61)に提供するプラットホーム・アズ・ア・サービス(PaaS)、(2)仮想サーバのようなインフラストラクチャを各クライアント(各エンドユーザ端末61)に提供するインフラストラクチャ・アズ・ア・サービス(IaaS)、等がある。 Examples of services that can be provided by the host (server) 2 include (1) a platform as a service (PaaS) that provides a system operating platform to each client (each end-user terminal 61), (2) a virtual server and infrastructure as a service (IaaS) that provides each client (each end-user terminal 61) with such an infrastructure.

複数の仮想マシンが、このホスト(サーバ)2として機能する物理サーバ上で実行されてもよい。ホスト(サーバ)2上で走るこれら仮想マシンの各々は、対応する幾つかのクライアント(エンドユーザ端末61)に各種サービスを提供するように構成された仮想サーバとして機能することができる。 A plurality of virtual machines may run on the physical server that functions as this host (server) 2 . Each of these virtual machines running on the host (server) 2 can function as a virtual server configured to provide various services to a corresponding number of clients (end-user terminals 61).

ホスト(サーバ)2は、フラッシュアレイを構成する複数のフラッシュストレージデバイス3を管理するストレージ管理機能と、エンドユーザ端末61それぞれに対してストレージアクセスを含む様々なサービスを提供するフロントエンド機能とを含む。 The host (server) 2 includes a storage management function that manages a plurality of flash storage devices 3 that make up a flash array, and a front-end function that provides various services including storage access to each end user terminal 61. .

フラッシュストレージデバイス3は、NAND型フラッシュメモリのような不揮発性メモリを含む。一つのフラッシュストレージデバイス3は、不揮発性メモリ内の複数のブロックから割り当てられた複数の書き込み先ブロックを管理する。書き込み先ブロックとは、データが書き込まれるべきブロックを意味する。ホスト2からフラッシュストレージデバイス3に送出されるライト要求(ライトコマンド)には、データが書き込まれるべき一つの書き込み先ブロックに関連づけられた識別子が含まれる。このライト要求に含まれるこの識別子に基づいて、フラッシュストレージデバイス3は、複数の書き込み先ブロックから、このデータが書き込まれるべき一つの書き込み先ブロックを決定する。 The flash storage device 3 includes non-volatile memory such as NAND flash memory. One flash storage device 3 manages multiple write destination blocks allocated from multiple blocks in the nonvolatile memory. A write destination block means a block to which data is to be written. A write request (write command) sent from the host 2 to the flash storage device 3 includes an identifier associated with one write destination block to which data is to be written. Based on this identifier included in this write request, the flash storage device 3 determines one write destination block to which this data is to be written from a plurality of write destination blocks.

このライト要求に含まれる識別子は、特定の書き込み先ブロックを指定するブロック識別子であってもよい。ブロック識別子は、ブロックアドレス(ブロック番号)によって表されてもよい。あるいは、フラッシュストレージデバイス3が複数のNAND型フラッシュメモリチップを含むケースにおいては、ブロック識別子は、ブロックアドレス(ブロック番号)とチップ番号との組み合わせによって表されてもよい。 The identifier included in this write request may be a block identifier specifying a specific write destination block. A block identifier may be represented by a block address (block number). Alternatively, in the case where the flash storage device 3 includes multiple NAND flash memory chips, the block identifier may be represented by a combination of block address (block number) and chip number.

フラッシュストレージデバイス3がストリーム書き込みをサポートしているケースにおいては、このライト要求に含まれる識別子は、複数のストリーム内の一つのストリームの識別子(ストリームID)であってもよい。ストリーム書き込みにおいては、複数の書き込み先ブロックが複数のストリームにそれぞれ関連付けられる。換言すれば、フラッシュストレージデバイス3があるストリームIDを含むライト要求をホスト2から受信した場合、このフラッシュストレージデバイス3は、このストリームIDに対応するストリームに関連づけられた書き込み先ブロックにデータを書き込む。フラッシュストレージデバイス3が別のストリームIDを含むライト要求をホスト2から受信した場合、このフラッシュストレージデバイス3は、この別のストリームIDに対応する別のストリームに関連づけられた別の書き込み先ブロックにデータを書き込む。 In the case where the flash storage device 3 supports stream writing, the identifier included in this write request may be the identifier of one stream (stream ID) among multiple streams. In stream writing, multiple write destination blocks are associated with multiple streams, respectively. In other words, when the flash storage device 3 receives a write request containing a certain stream ID from the host 2, this flash storage device 3 writes the data to the destination block associated with the stream corresponding to this stream ID. When the flash storage device 3 receives a write request containing another stream ID from the host 2, this flash storage device 3 writes data to another write destination block associated with another stream corresponding to this another stream ID. write.

フラッシュストレージデバイス3によって管理される複数の書き込み先ブロックは、このフラッシュストレージデバイス3を共有する複数のエンドユーザ(クライアント)によってそれぞれ使用されてもよい。この場合、フラッシュストレージデバイス3においては、フラッシュストレージデバイス3を共有するエンドユーザの数と同数またはそれ以上の書き込み先ブロックがオープンされる。 Multiple write destination blocks managed by the flash storage device 3 may be used by multiple end users (clients) sharing this flash storage device 3 . In this case, in the flash storage device 3, as many write destination blocks as or more than the number of end users who share the flash storage device 3 are opened.

このように、同時に利用可能な複数の書き込み先ブロックがフラッシュストレージデバイス3に存在する環境においては、これら書き込み先ブロックの数と同数のライトバッファを用意することが必要となる。 Thus, in an environment where a plurality of write destination blocks that can be used simultaneously exist in the flash storage device 3, it is necessary to prepare the same number of write buffers as the number of these write destination blocks.

なぜなら、最近のNAND型フラッシュメモリの多くはメモリセル当たりに複数ビットのデータを書き込むように構成されており、書き込み先ブロック毎に、この書き込み先ブロックに書き込まれるべき複数ページ分のデータを保持しておくことが必要となるからである。 This is because most of the recent NAND flash memories are configured to write multiple bits of data per memory cell, and each write destination block holds multiple pages of data to be written to this write destination block. This is because it is necessary to keep

また、最近のNAND型フラッシュメモリにおいては、プログラムディスターブを削減するために、ライトデータをNAND型フラッシュメモリに複数回転送することを伴う複数段階のプログラム動作によってライトデータをNAND型フラッシュメモリに書き込むというライト方法が適用されるケースがある。このようなライト方法の典型例としては、フォギー・ファイン・プログラム動作が挙げられる。この場合においても、複数段階のプログラム動作が終了するまでライトデータを保持する必要があるので、書き込み先ブロックの数と同数のライトバッファを用意することが必要となる。 In addition, in recent NAND flash memories, in order to reduce program disturb, write data is written into the NAND flash memory through a multi-stage program operation that involves transferring the write data to the NAND flash memory multiple times. There are cases where the write method is applied. A typical example of such a write method is the foggy fine program operation. Even in this case, it is necessary to hold the write data until the program operation in multiple stages is completed, so it is necessary to prepare the same number of write buffers as the number of write destination blocks.

フォギー・ファイン・プログラム動作では、例えば、複数ページ分の第1のライトデータがNAND型フラッシュメモリに転送され、そして第1のライトデータが最初の物理ページ(あるワード線に接続されたメモリセル群)に書き込まれる(一段階目の書き込み:フォギー書き込み)。この後、最初の物理ページに隣接する別の物理ページ(別のワード線に接続されたメモリセル群)に対するフォギー書き込みが実行される。そして、上述の複数ページ分の第1のライトデータがNAND型フラッシュメモリに再び転送され、そしてこの第1のライトデータが最初の物理ページに書き込まれる(二段階目の書き込み:ファイン書き込み)。この後、上述の別の物理ページに対するファイン書き込みが実行される。 In the foggy fine program operation, for example, first write data for multiple pages is transferred to the NAND flash memory, and the first write data is transferred to the first physical page (memory cells connected to a certain word line). ) (First stage write: Foggy write). After that, foggy write is performed to another physical page (memory cell group connected to another word line) adjacent to the first physical page. Then, the above-described first write data for multiple pages is transferred to the NAND flash memory again, and this first write data is written in the first physical page (second stage writing: fine writing). After this, the fine write to another physical page as described above is performed.

しかし、フラッシュストレージデバイス3内のランダムアクセスメモリの容量は限られているので、十分な数のライトバッファをフラッシュストレージデバイス3内のランダムアクセスメモリ上に用意することは困難な場合がある。また、たとえフラッシュストレージデバイス3に大容量のランダムアクセスメモリを用意したとしても、フラッシュストレージデバイス3を共有するエンドユーザの数が少ない場合には、大容量のランダムアクセスメモリが無駄になる結果となる。 However, since the random access memory capacity within the flash storage device 3 is limited, it may be difficult to provide a sufficient number of write buffers on the random access memory within the flash storage device 3 . Also, even if a large capacity random access memory is provided in the flash storage device 3, if the number of end users sharing the flash storage device 3 is small, the large capacity random access memory will be wasted. .

そこで、本実施形態では、ホスト2のメモリ上の所定の記憶領域がライトバッファ(以下、UWB:Unified Write Bufferと称する)2Aとして利用される。ホスト2側のUWB2Aは、複数の書き込み先ブロックに対応する複数のライトバッファ領域を含む。 Therefore, in this embodiment, a predetermined storage area on the memory of the host 2 is used as a write buffer (hereinafter referred to as UWB: Unified Write Buffer) 2A. The UWB 2A on the host 2 side includes multiple write buffer areas corresponding to multiple write destination blocks.

ホスト2は、一つの書き込み先ブロックに書き込むべきライトデータをUWB2A(この書き込み先ブロックに対応するライトバッファ領域)に格納する。そして、ホスト2は、この一つの書き込み先ブロックに関連付けられた識別子(ブロック識別子またはストリームID)と、このライトデータが格納されているUWB2A内の位置を示す記憶位置情報とを含むライト要求をフラッシュストレージデバイス3に送出する。 The host 2 stores write data to be written to one write destination block in the UWB 2A (write buffer area corresponding to this write destination block). Then, the host 2 flushes a write request including an identifier (block identifier or stream ID) associated with this one write destination block and storage location information indicating the location within the UWB 2A where this write data is stored. Send to the storage device 3 .

フラッシュストレージデバイス3は、このライト要求をホスト2から受信し、識別子と記憶位置情報とを保持する。フラッシュストレージデバイス3は、このライトデータをNAND型フラッシュメモリに書き込む際に、上述の記憶位置情報を含む転送要求をホスト2に送出することによって上述のライトデータをUWB2Aから取得する。例えば、NAND型フラッシュメモリがメモリセル当たりに3ビットのデータを格納するTLC(トリプル・レベル・セル)-フラッシュメモリである場合には、同一の物理ページに書き込むべき3ページ分のライトデータがUWB2Aから取得される。一つの物理ページには3つのページアドレスが割り当てられてもよい。そして、フラッシュストレージデバイス3は、このライトデータを一つの書き込み先ブロック(この書き込み先ブロックのある物理ページ)に書き込む。 The flash storage device 3 receives this write request from the host 2 and holds the identifier and storage location information. When writing this write data to the NAND flash memory, the flash storage device 3 acquires the above write data from the UWB 2A by sending a transfer request including the above storage location information to the host 2 . For example, if the NAND flash memory is a TLC (triple level cell) flash memory that stores 3-bit data per memory cell, write data for 3 pages to be written to the same physical page is UWB2A. obtained from Three page addresses may be assigned to one physical page. Then, the flash storage device 3 writes this write data to one write destination block (physical page containing this write destination block).

フラッシュストレージデバイス3は、フル・シーケンス・プログラム動作によってこのライトデータを一つの書き込み先ブロックに書き込んでもよい。 The flash storage device 3 may write this write data to one write destination block by a full sequence program operation.

あるいは、フラッシュストレージデバイス3は、ライトデータ(例えば3ページ分のライトデータ)をNAND型フラッシュメモリに複数回転送することを伴う複数段階のプログラム動作(例えばフォギー・ファイン・プログラム動作)によってこのライトデータを一つの書き込み先ブロックに書き込んでもよい。この場合には、フラッシュストレージデバイス3は、最初に、一段階目の書き込み動作を実行する。その後、二段階目の書き込み動作を実行するタイミングになった時に、フラッシュストレージデバイス3は、上述の記憶位置情報を含む転送要求をホスト2に再び送出する。ホスト2は、上述の記憶位置情報を含む転送要求をフラッシュストレージデバイス3から受信する度に、このライトデータをUWB2Aからフラッシュストレージデバイス3に転送する。上述のライトデータをUWB2Aから再び取得すると、フラッシュストレージデバイス3は、二段階目の書き込み動作を実行する。 Alternatively, the flash storage device 3 stores the write data (for example, 3 pages worth of write data) by a multi-step program operation (for example, foggy fine program operation) that involves transferring the write data to the NAND flash memory multiple times. may be written to a single destination block. In this case, the flash storage device 3 first executes the first stage write operation. After that, when the timing for executing the second-stage write operation comes, the flash storage device 3 sends the transfer request including the above-described storage location information to the host 2 again. The host 2 transfers this write data from the UWB 2A to the flash storage device 3 each time it receives a transfer request including the storage location information described above from the flash storage device 3 . When the above write data is obtained again from the UWB 2A, the flash storage device 3 executes the second stage write operation.

フラッシュストレージデバイス3は、このライトデータの書き込みが終了し且つこのライトデータがNAND型フラッシュメモリから読み出し可能になった場合(フル・シーケンス・プログラム動作においてはフル・シーケンス・プログラム動作が終了した場合、フォギー・ファイン・プログラム動作においてはフォギー書き込み動作とファイン書き込み動作の双方が終了した場合)に、UWB2Aに保持されているこのライトデータが不要になったことをホスト2に通知する。 When the writing of this write data is finished and this write data can be read from the NAND flash memory (in the full sequence program operation, when the full sequence program operation is finished, the flash storage device 3 When both the foggy write operation and the fine write operation are finished in the foggy fine program operation), the host 2 is notified that the write data held in the UWB 2A is no longer needed.

したがって、本実施形態においては、フラッシュストレージデバイス3に多数のライトバッファを用意することなく、多数の書き込み先ブロックを同時に利用することが可能となる。したがって、フラッシュストレージデバイス3に大容量のランダムアクセスメモリを設ける必要が無くなるので、フラッシュストレージデバイス3のコストアップを招くことなく、フラッシュストレージデバイス3を共有するエンドユーザの数を容易に増やすことが可能となる。 Therefore, in this embodiment, it is possible to simultaneously use a large number of write destination blocks without preparing a large number of write buffers in the flash storage device 3 . Therefore, since there is no need to provide a large-capacity random access memory in the flash storage device 3, it is possible to easily increase the number of end users who share the flash storage device 3 without increasing the cost of the flash storage device 3. becomes.

図2は、フラッシュストレージデバイス3の構成例を示す。 FIG. 2 shows a configuration example of the flash storage device 3 .

フラッシュストレージデバイス3は、コントローラ4および不揮発性メモリ(NAND型フラッシュメモリ)5を備える。フラッシュストレージデバイス3は、ランダムアクセスメモリ、例えば、DRAM6も備えていてもよい。 The flash storage device 3 has a controller 4 and a nonvolatile memory (NAND type flash memory) 5 . Flash storage device 3 may also comprise random access memory, eg DRAM 6 .

NAND型フラッシュメモリ5は、マトリクス状に配置された複数のメモリセルを含むメモリセルアレイを含む。NAND型フラッシュメモリ5は、2次元構造のNAND型フラッシュメモリであってもよいし、3次元構造のNAND型フラッシュメモリであってもよい。 The NAND flash memory 5 includes a memory cell array including a plurality of memory cells arranged in a matrix. The NAND flash memory 5 may be a two-dimensional NAND flash memory or a three-dimensional NAND flash memory.

NAND型フラッシュメモリ5のメモリセルアレイは、複数のブロックBLK0~BLKm-1を含む。ブロックBLK0~BLKm-1の各々は多数のページ(ここではページP0~Pn-1)によって編成される。ブロックBLK0~BLKm-1は、消去単位として機能する。ブロックは、「消去ブロック」、「物理ブロック」、または「物理消去ブロック」と称されることもある。ページP0~Pn-1の各々は、同一ワード線に接続された複数のメモリセルを含む。ページP0~Pn-1は、「物理ページ」と称されることもある。ページP0~Pn-1は、データ書き込み動作およびデータ読み込み動作の単位である。 A memory cell array of the NAND flash memory 5 includes a plurality of blocks BLK0 to BLKm-1. Each of the blocks BLK0 to BLKm-1 is organized by a number of pages (pages P0 to Pn-1 here). Blocks BLK0 to BLKm-1 function as erase units. Blocks may also be referred to as "erase blocks," "physical blocks," or "physical erase blocks." Each of pages P0-Pn-1 includes a plurality of memory cells connected to the same word line. Pages P0 to Pn-1 are sometimes referred to as "physical pages." Pages P0 to Pn-1 are units for data write operations and data read operations.

コントローラ4は、Toggle、オープンNANDフラッシュインタフェース(ONFI)のようなフラッシュプログラミングコントローラ13を介して、不揮発性メモリであるNAND型フラッシュメモリ5に電気的に接続されている。コントローラ4は、NAND型フラッシュメモリ5を制御するように構成されたメモリコントローラとして動作する。このコントローラ4は、System-on-a-chip(SoC)のような回路によって実現されてもよい。 The controller 4 is electrically connected to a NAND flash memory 5, which is a non-volatile memory, via a flash programming controller 13 such as Toggle, an open NAND flash interface (ONFI). Controller 4 operates as a memory controller configured to control NAND flash memory 5 . This controller 4 may be implemented by a circuit such as a System-on-a-chip (SoC).

NAND型フラッシュメモリ5は、図3に示すように、複数のNAND型フラッシュメモリチップ(NAND型フラッシュメモリダイ)を含んでいてもよい。個々のNAND型フラッシュメモリチップは独立して動作可能である。このため、NAND型フラッシュメモリチップは、並列動作可能な単位として機能する。図3においては、フラッシュプログラミングコントローラ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として編成されてもよい。バンクは、複数のメモリモジュールをバンクインタリーブによって並列動作させるための単位として機能する。図3の構成例においては、16チャンネルと、2つのバンクを使用したバンクインタリーブとによって、最大32個のNAND型フラッシュメモリチップを並列動作させることができる。 The NAND flash memory 5 may include a plurality of NAND flash memory chips (NAND flash memory dies), as shown in FIG. Individual NAND flash memory chips can operate independently. Therefore, the NAND flash memory chip functions as a unit capable of parallel operation. 3, the flash programming controller 13 has 16 channels Ch. 1 to Ch. 16 are connected, and 16 channels Ch. 1 to Ch. 16 are connected to two NAND flash memory chips. In this case, channel Ch. 1 to Ch. 16 NAND flash memory chips #1 to #16 connected to channel Ch.16 may be organized as bank #0, and channel Ch. 1 to Ch. The remaining 16 NAND flash memory chips #17-#32 connected to 16 may be organized as bank #1. A bank functions as a unit for operating a plurality of memory modules in parallel by bank interleaving. In the configuration example of FIG. 3, a maximum of 32 NAND flash memory chips can be operated in parallel by 16 channels and bank interleaving using two banks.

消去動作は、一つのブロック(物理ブロック)の単位で実行されてみよいし、並列動作可能な複数の物理ブロックの集合を含むスーパーブロックの単位で実行されてもよい。一つのスーパーブロックは、これに限定されないが、NAND型フラッシュメモリチップ#1~#32から一つずつ選択される計32個の物理ブロックを含んでいてもよい。なお、NAND型フラッシュメモリチップ#1~#32の各々はマルチプレーン構成を有していてもよい。例えば、NAND型フラッシュメモリチップ#1~#32の各々が、2つのプレーンを含むマルチプレーン構成を有する場合には、一つのスーパーブロックは、NAND型フラッシュメモリチップ#1~#32に対応する64個のプレーンから一つずつ選択される計64個の物理ブロックを含んでいてもよい。 The erase operation may be performed in units of one block (physical block), or may be performed in units of super blocks including a set of a plurality of physical blocks capable of parallel operation. One super block may include, but is not limited to, a total of 32 physical blocks selected one by one from NAND flash memory chips #1 to #32. Each of the NAND flash memory chips #1 to #32 may have a multiplane configuration. For example, when each of the NAND flash memory chips #1 to #32 has a multiplane configuration including two planes, one super block is 64 superblocks corresponding to the NAND flash memory chips #1 to #32. It may contain a total of 64 physical blocks selected one by one from the planes.

図4には、32個の物理ブロック(ここでは、NAND型フラッシュメモリチップ#1内の物理ブロックBLK2、NAND型フラッシュメモリチップ#2内の物理ブロックBLK3、NAND型フラッシュメモリチップ#3内の物理ブロックBLK7、NAND型フラッシュメモリチップ#4内の物理ブロックBLK4、NAND型フラッシュメモリチップ#5内の物理ブロックBLK6、…NAND型フラッシュメモリチップ#32内の物理ブロックBLK3)を含む一つのスーパーブロック(SB)が例示されている。 FIG. 4 shows 32 physical blocks (here, physical block BLK2 in NAND flash memory chip #1, physical block BLK3 in NAND flash memory chip #2, physical block BLK3 in NAND flash memory chip #3). Block BLK7, physical block BLK4 in NAND flash memory chip #4, physical block BLK6 in NAND flash memory chip #5, . . . physical block BLK3 in NAND flash memory chip #32). SB) are exemplified.

書き込み先ブロックは一つの物理ブロックであってもよいし、一つのスーパーブロックであってもよい。なお、一つのスーパーブロックが一つの物理ブロックのみを含む構成が利用されてもよく、この場合には、一つのスーパーブロックは一つの物理ブロックと等価である。 The write destination block may be one physical block or one super block. A configuration in which one superblock includes only one physical block may be used, in which case one superblock is equivalent to one physical block.

次に、図1のコントローラ4の構成について説明する。 Next, the configuration of the controller 4 shown in FIG. 1 will be described.

コントローラ4は、ホストインタフェース11、CPU12、フラッシュプログラミングコントローラ13、およびDRAMインタフェース14等を含む。これらCPU12、フラッシュプログラミングコントローラ13、DRAMインタフェース14は、バス10を介して相互接続される。 Controller 4 includes host interface 11, CPU 12, flash programming controller 13, DRAM interface 14, and the like. These CPU 12 , flash programming controller 13 and DRAM interface 14 are interconnected via bus 10 .

このホストインタフェース11は、ホスト2との通信を実行するように構成されたホストインタフェース回路である。このホストインタフェース11は、例えば、PCIeコントローラ(NVMeコントローラ)であってもよい。あるいは、フラッシュストレージデバイス3がEthernet(登録商標)を介してホスト2に接続される構成においては、ホストインタフェース11は、NVMe over Fabrics(NVMeOF)コントローラであってもよい。フラッシュストレージデバイス3がEthernet(登録商標)を介してホスト2に接続される構成は、必要に応じて、フラッシュストレージデバイス3の数を容易に増やすことを可能にする。さらに、ホスト2の数を容易に増やすことも可能である。 The host interface 11 is a host interface circuit configured to communicate with the host 2 . This host interface 11 may be, for example, a PCIe controller (NVMe controller). Alternatively, in configurations where the flash storage device 3 is connected to the host 2 via Ethernet (registered trademark), the host interface 11 may be an NVMe over Fabrics (NVMeOF) controller. The configuration in which the flash storage devices 3 are connected to the host 2 via Ethernet (registered trademark) makes it possible to easily increase the number of flash storage devices 3 as required. Furthermore, it is also possible to easily increase the number of hosts 2 .

ホストインタフェース11は、ホスト2から様々な要求(コマンド)を受信する。これら要求(コマンド)には、ライト要求(ライトコマンド)、リード要求(リードコマンド)、他の様々な要求(コマンド)が含まれる。 The host interface 11 receives various requests (commands) from the host 2 . These requests (commands) include write requests (write commands), read requests (read commands), and various other requests (commands).

CPU12は、ホストインタフェース11、フラッシュプログラミングコントローラ13、DRAMインタフェース14を制御するように構成されたプロセッサである。CPU12は、フラッシュストレージデバイス3の電源オンに応答してNAND型フラッシュメモリ5または図示しないROMから制御プログラム(ファームウェア)をDRAM6にロードし、そしてこのファームウェアを実行することによって様々な処理を行う。なお、ファームウェアはコントローラ4内の図示しないSRAM上にロードされてもよい。このCPU12は、ホスト2からの様々なコマンドを処理するためのコマンド処理等を実行することができる。CPU12の動作は、CPU12によって実行される上述のファームウェアによって制御される。なお、コマンド処理の一部または全部は、コントローラ4内の専用ハードウェアによって実行してもよい。 CPU 12 is a processor configured to control host interface 11 , flash programming controller 13 and DRAM interface 14 . The CPU 12 loads a control program (firmware) from the NAND flash memory 5 or a ROM (not shown) into the DRAM 6 in response to power-on of the flash storage device 3, and executes various processes by executing this firmware. Note that the firmware may be loaded onto an SRAM (not shown) within the controller 4 . This CPU 12 can execute command processing and the like for processing various commands from the host 2 . The operation of CPU 12 is controlled by the aforementioned firmware executed by CPU 12 . Part or all of the command processing may be executed by dedicated hardware within the controller 4 .

CPU12は、ブロック識別子/バッファアドレス受信部21、転送要求送信部22、および通知部23として機能することができる。 The CPU 12 can function as a block identifier/buffer address receiver 21 , a transfer request transmitter 22 and a notifier 23 .

ブロック識別子/バッファアドレス受信部21は、ブロック識別子とバッファアドレスとを含むライト要求をホスト2から受信し、これらブロック識別子とバッファアドレスを所定の記憶領域に保持する。ライト要求に含まれるブロック識別子は、ある特定の書き込み先ブロックを指定するブロックアドレスであってもよい。あるいは、ライト要求は、ブロック識別子の代わりに、ストリームIDを含んでいてもよい。ブロック識別子またはストリームIDは、一つの書き込み先ブロックに関連付けられた識別子として機能する。ライト要求に含まれるバッファアドレスは、書き込むべきデータ(ライトデータ)が格納されているUWB2A内の位置を示す記憶位置情報である。あるいは、ライト要求は、バッファアドレスの代わりに、バッファ内オフセットを記憶位置情報として含んでいてもよい。バッファ内オフセットは、ライトデータが格納されているUWB2A内のオフセット位置を示す。 A block identifier/buffer address receiving unit 21 receives a write request including a block identifier and a buffer address from the host 2 and holds the block identifier and buffer address in a predetermined storage area. The block identifier included in the write request may be a block address specifying a particular write destination block. Alternatively, the write request may contain the stream ID instead of the block identifier. A block identifier or stream ID functions as an identifier associated with one write destination block. The buffer address included in the write request is storage location information indicating the location within the UWB 2A where the data to be written (write data) is stored. Alternatively, the write request may contain an offset within the buffer as storage location information instead of the buffer address. The intra-buffer offset indicates the offset position within the UWB 2A in which the write data is stored.

転送要求送信部22は、上述のライトデータをNAND型フラッシュメモリ5に書き込む際に、記憶位置情報(例えばバッファアドレス)を含む転送要求をホスト2に送出し、これによってライトデータをUWB2Aから取得する。 When writing the above-mentioned write data to the NAND flash memory 5, the transfer request transmission unit 22 sends a transfer request including storage position information (for example, buffer address) to the host 2, thereby acquiring the write data from the UWB 2A. .

通知部23は、上述のライトデータの書き込みが終了し且つ上述のライトデータがNAND型フラッシュメモリ5から読み出し可能になった場合、UWB2Aに保持されている上述のライトデータが不要になったことをホスト2に通知する。 When the writing of the above-mentioned write data is completed and the above-mentioned write data can be read from the NAND flash memory 5, the notification unit 23 notifies that the above-mentioned write data held in the UWB 2A is no longer necessary. Notify host 2.

フラッシュプログラミングコントローラ13は、CPU12の制御の下、NAND型フラッシュメモリ5を制御するように構成されたメモリ制御回路である。 Flash programming controller 13 is a memory control circuit configured to control NAND flash memory 5 under the control of CPU 12 .

DRAMインタフェース14は、CPU12の制御の下、DRAM6を制御するように構成されたDRAM制御回路である。DRAM6の記憶領域の一部は、リードバッファ(RB)30、ライトバッファ(WB)31、ブロック管理テーブル32、不良情報管理テーブル33の格納のために使用される。なお、これらリードバッファ(RB)30、ライトバッファ(WB)31、ブロック管理テーブル32、不良情報管理テーブル33は、コントローラ4内の図示しないSRAMに格納されてもよい。ブロック管理テーブル32は、各ブロックに格納されているデータが有効データまたは無効データのいずれであるかを管理する。不良情報管理テーブル33は、不良ブロックのリストを管理する。 DRAM interface 14 is a DRAM control circuit configured to control DRAM 6 under the control of CPU 12 . A part of the storage area of the DRAM 6 is used for storing a read buffer (RB) 30, a write buffer (WB) 31, a block management table 32, and a defect information management table 33. FIG. The read buffer (RB) 30, write buffer (WB) 31, block management table 32, and defect information management table 33 may be stored in an SRAM (not shown) within the controller 4. FIG. The block management table 32 manages whether the data stored in each block is valid data or invalid data. The defect information management table 33 manages a list of defect blocks.

図5は、複数のエンドユーザに対応する複数の書き込み先ブロックと複数のライトバッファ領域との関係を示す。 FIG. 5 shows the relationship between multiple write destination blocks corresponding to multiple end users and multiple write buffer areas.

フラッシュストレージデバイス3においては、ブロックの状態は、有効データを格納しているアクティブブロックと、有効データを格納していないフリーブロックとに大別される。アクティブブロックである各ブロックは、アクティブブロックプールと称されるリストによって管理される。一方、フリーブロックである各ブロックは、フリーブロックプールと称されるリストによって管理される。 In the flash storage device 3, the states of blocks are roughly divided into active blocks storing valid data and free blocks not storing valid data. Each block that is an active block is managed by a list called the active block pool. On the other hand, each block that is a free block is managed by a list called free block pool.

本実施形態では、コントローラ4は、フリーブロックプールから選択された複数のブロック(フリーブロック)を、ホスト2から受信されたライトデータが書き込まれるべき書き込み先ブロックとして割り当てる。この場合、コントローラ4は、まず、選択された各ブロック(フリーブロック)に対する消去動作を実行し、これによって各ブロックを、書き込み可能な消去状態にする。書き込み可能な消去状態にされたブロックが、オープンされた書き込み先ブロックとなる。ある書き込み先ブロックの全体がホスト2からのライトデータで満たされると、コントローラ4は、この書き込み先ブロックをアクティブブロックプールに移動し、フリーブロックプールから新たな一つのブロック(フリーブロック)を新たな書き込み先ブロックとして割り当てる。 In this embodiment, the controller 4 allocates a plurality of blocks (free blocks) selected from the free block pool as write destination blocks to which write data received from the host 2 should be written. In this case, the controller 4 first performs an erase operation on each selected block (free block), thereby putting each block into a writable erased state. A writable erased block becomes an open write destination block. When a certain write destination block is entirely filled with write data from the host 2, the controller 4 moves this write destination block to the active block pool and creates a new block (free block) from the free block pool. Allocate as a write destination block.

フラッシュストレージデバイス3においては、フラッシュストレージデバイス3を共有するエンドユーザ(エンドユーザ端末)と同数またはそれよりも多い書き込み先ブロック(フラッシュブロック)がオープンされる。ホスト2側のUWB2Aは、これら書き込み先ブロック(フラッシュブロック)と同数のライトバッファ領域(UWB領域)を含んでいてもよい。 In the flash storage device 3, the same number of write destination blocks (flash blocks) as the number of end users (end user terminals) sharing the flash storage device 3 or more are opened. The UWB 2A on the host 2 side may include the same number of write buffer areas (UWB areas) as these write destination blocks (flash blocks).

図5においては、ライトバッファ領域#1は書き込み先ブロック#1に関連付けられており、書き込み先ブロック#1に書き込むべき全てのデータはライトバッファ領域#1に格納される。ライトバッファ領域#2は書き込み先ブロック#2に関連付けられており、書き込み先ブロック#2に書き込むべき全てのデータはライトバッファ領域#2に格納される。ライトバッファ領域#3は書き込み先ブロック#3に関連付けられており、書き込み先ブロック#4に書き込むべき全てのデータはライトバッファ領域#3に格納される。同様に、ライトバッファ領域#nは書き込み先ブロック#nに関連付けられており、書き込み先ブロック#nに書き込むべき全てのデータはライトバッファ領域#nに格納される。 In FIG. 5, write buffer area #1 is associated with write destination block #1, and all data to be written to write destination block #1 is stored in write buffer area #1. Write buffer area #2 is associated with write destination block #2, and all data to be written to write destination block #2 is stored in write buffer area #2. Write buffer area #3 is associated with destination block #3, and all data to be written to destination block #4 is stored in write buffer area #3. Similarly, write buffer area #n is associated with write destination block #n, and all data to be written to write destination block #n is stored in write buffer area #n.

ホスト2は、エンドユーザ端末#1からのライトデータをライトバッファ領域#1に格納し、エンドユーザ端末#2からのライトデータをライトバッファ領域#2に格納し、エンドユーザ端末#3からのライトデータをライトバッファ領域#3に格納し、エンドユーザ端末#4からのライトデータをライトバッファ領域#4に格納し、そして、エンドユーザ端末#nからのライトデータをライトバッファ領域#nに格納する。 The host 2 stores write data from the end user terminal #1 in the write buffer area #1, stores write data from the end user terminal #2 in the write buffer area #2, and stores write data from the end user terminal #3 in the write buffer area #2. Data is stored in write buffer area #3, write data from end user terminal #4 is stored in write buffer area #4, and write data from end user terminal #n is stored in write buffer area #n. .

ホスト2は、書き込み先ブロック#1に関連付けられた識別子と、エンドユーザ端末#1からのライトデータが格納されているライトバッファ領域#1内の位置を示す記憶位置情報とを含むライト要求をフラッシュストレージデバイス3に送出する。書き込み先ブロック#1に関連付けられた識別子は、書き込み先ブロック#1を指定するブロック識別子(ブロックアドレス)であってもよいし、書き込み先ブロック#1に関連付けられストリームIDであってもよい。 The host 2 flushes a write request including an identifier associated with the write destination block #1 and storage location information indicating the location within the write buffer area #1 where the write data from the end user terminal #1 is stored. Send to the storage device 3 . The identifier associated with the write destination block #1 may be a block identifier (block address) specifying the write destination block #1, or may be a stream ID associated with the write destination block #1.

フラッシュストレージデバイス3は、この記憶位置情報を含む転送要求をホスト2に送出することによって1物理ページのサイズに相当するライトデータ(例えば、TLC-フラッシュメモリの場合には3ページ分のライトデータ)をライトバッファ領域#1から取得する。なお、この転送要求は、記憶位置情報のみならず、書き込み先ブロック#1に関連付けられた識別子(例えば、書き込み先ブロック#1を指定するブロック識別子、または書き込み先ブロック#1に関連付けられストリームID)を含んでいてもよい。これにより、ホスト2は、フラッシュストレージデバイス3に転送すべきライトデータが格納されているライトバッファ領域とこのライトバッファ領域内の位置(記憶位置)とを容易に特定することができる。 The flash storage device 3 sends write data corresponding to the size of one physical page (for example, write data for three pages in the case of TLC-flash memory) by sending a transfer request including this storage location information to the host 2. is obtained from the write buffer area #1. Note that this transfer request includes not only the storage location information but also an identifier associated with the write destination block #1 (for example, a block identifier specifying the write destination block #1, or a stream ID associated with the write destination block #1). may contain As a result, the host 2 can easily specify the write buffer area in which the write data to be transferred to the flash storage device 3 is stored and the position (storage position) within this write buffer area.

ホスト2は、書き込み先ブロック#2に関連付けられた識別子(例えば、書き込み先ブロック#2を指定するブロック識別子、または書き込み先ブロック#2に関連付けられストリームID)と、エンドユーザ端末#2からのライトデータが格納されているライトバッファ領域#2内の位置を示す記憶位置情報とを含むライト要求をフラッシュストレージデバイス3に送出する。 The host 2 receives an identifier associated with the write destination block #2 (for example, a block identifier specifying the write destination block #2 or a stream ID associated with the write destination block #2) and a write from the end user terminal #2. A write request is sent to the flash storage device 3, which includes storage position information indicating the position in the write buffer area #2 where the data is stored.

フラッシュストレージデバイス3は、この記憶位置情報を含む転送要求をホスト2に送出することによって1物理ページのサイズに相当するライトデータ(例えば、TLC-フラッシュメモリの場合には3ページ分のライトデータ)をライトバッファ領域#2から取得する。なお、この転送要求は、記憶位置情報のみならず、書き込み先ブロック#2に関連付けられた識別子(例えば、書き込み先ブロック#2を指定するブロック識別子、または書き込み先ブロック#2に関連付けられストリームID)を含んでいてもよい。これにより、ホスト2は、フラッシュストレージデバイス3に転送すべきライトデータが格納されているライトバッファ領域とこのライトバッファ領域内の位置(記憶位置)とを容易に特定することができる。 The flash storage device 3 sends write data corresponding to the size of one physical page (for example, write data for three pages in the case of TLC-flash memory) by sending a transfer request including this storage location information to the host 2. is obtained from write buffer area #2. Note that this transfer request includes not only the storage position information but also an identifier associated with the write destination block #2 (for example, a block identifier specifying the write destination block #2, or a stream ID associated with the write destination block #2). may contain As a result, the host 2 can easily specify the write buffer area in which the write data to be transferred to the flash storage device 3 is stored and the position (storage position) within this write buffer area.

同様に、ホスト2は、書き込み先ブロック#nに関連付けられた識別子(例えば、書き込み先ブロック#nを指定するブロック識別子、または書き込み先ブロック#nに関連付けられストリームID)と、エンドユーザ端末#nからのライトデータが格納されているライトバッファ領域#n内の位置を示す記憶位置情報とを含むライト要求をフラッシュストレージデバイス3に送出する。 Similarly, the host 2 stores an identifier associated with the write destination block #n (for example, a block identifier specifying the write destination block #n or a stream ID associated with the write destination block #n) and an end user terminal #n. A write request is sent to the flash storage device 3, which includes storage position information indicating the position within the write buffer area #n where the write data from is stored.

フラッシュストレージデバイス3は、この記憶位置情報を含む転送要求をホスト2に送出することによって1物理ページのサイズに相当するライトデータ(例えば、TLC-フラッシュメモリの場合には3ページ分のライトデータ)をライトバッファ領域#nから取得する。なお、この転送要求は、記憶位置情報のみならず、書き込み先ブロック#nに関連付けられた識別子(例えば、書き込み先ブロック#nを指定するブロック識別子、または書き込み先ブロック#nに関連付けられストリームID)を含んでいてもよい。これにより、ホスト2は、フラッシュストレージデバイス3に転送すべきライトデータが格納されているライトバッファ領域とこのライトバッファ領域内の位置(記憶位置)とを容易に特定することができる。 The flash storage device 3 sends write data corresponding to the size of one physical page (for example, write data for three pages in the case of TLC-flash memory) by sending a transfer request including this storage location information to the host 2. is obtained from the write buffer area #n. Note that this transfer request includes not only the storage position information but also an identifier associated with the write destination block #n (for example, a block identifier specifying the write destination block #n, or a stream ID associated with the write destination block #n). may contain As a result, the host 2 can easily specify the write buffer area in which the write data to be transferred to the flash storage device 3 is stored and the position (storage position) within this write buffer area.

図6は、フラッシュストレージデバイス3とホスト側UWB2Aとの関係とホスト2とフラッシュストレージデバイス3とによって実行されるデータ書き込み処理を示す。 FIG. 6 shows the relationship between the flash storage device 3 and the host-side UWB 2A and data write processing executed by the host 2 and the flash storage device 3. As shown in FIG.

ここでは、図示を簡単にするために、ある一つの書き込み先ブロックBLKに対するデータ書き込み処理を例示して説明する。また、ここでは、フル・シーケンス・プログラム動作によってライトデータを一つの書き込み先ブロックBLKに書き込む場合を想定する。 Here, in order to simplify the illustration, the data write processing for one write destination block BLK will be described as an example. Also, here, it is assumed that write data is written to one write destination block BLK by a full sequence program operation.

(1) ホスト2においては、フラッシュストレージデバイス3を管理するホストソフトウェアであるフラッシュストレージマネージャが実行される。フラッシュストレージマネージャは、フラッシュストレージデバイス3用のデバイスドライバ内に組み込まれていてもよい。フラッシュストレージマネージャは、UWB2Aを管理する。上位ソフトウェア(アプリケーションプログラムまたはファイルシステム)からのデータを書き込む要求に応じて、フラッシュストレージマネージャは、書き込むべきデータ、タグ、ブロック識別子を伴うライト要求をUWB2Aに格納する。タグは、このデータを識別可能な識別子である。タグは、論理ブロックアドレス(LBA)のような論理アドレスであってもよいし、キー・バリュー・ストアのキーであってもよいし、ファイル名のようなファイル識別子であってもよい。ブロック識別子は、書き込み先ブロックBLKのブロックアドレスであってもよい。なお、このライト要求は、書き込むべきデータの長さ(Length)を含んでもよいし、固定長のライトデータの書き込みを要求するケースにおいては、このライト要求は、長さ(Length)を含まなくてもよい。また、このライト要求は、データを書き込むべきページを示すページアドレスを含んでいてもよい。なお、上位ソフトウェアがこのライト要求を発行してもよく、そしてフラッシュストレージマネージャがこのライト要求を上位ソフトウェアから受信し、受信したライト要求をUWB2Aに格納してもよい。 (1) The host 2 executes a flash storage manager, which is host software for managing the flash storage device 3 . A flash storage manager may be embedded within the device driver for the flash storage device 3 . A flash storage manager manages UWB2A. In response to a request to write data from upper software (application program or file system), the flash storage manager stores a write request with data to be written, tags and block identifiers in UWB2A. A tag is an identifier that can identify this data. A tag can be a logical address such as a logical block address (LBA), a key in a key-value store, or a file identifier such as a filename. The block identifier may be the block address of the write destination block BLK. Note that this write request may include the length of the data to be written (Length), and in the case of requesting writing of fixed-length write data, this write request must not include the length (Length). good too. This write request may also include a page address indicating the page to which the data should be written. The upper software may issue this write request, and the flash storage manager may receive this write request from the upper software and store the received write request in the UWB 2A.

(2) フラッシュストレージマネージャは、フラッシュストレージデバイス3にライト要求(ライトコマンド)を送出する。このライト要求は、タグ、ブロック識別子(ブロックアドレス)、バッファアドレス(またはバッファ内オフセット)を含む。バッファアドレスは、書き込むべきデータが格納されているUWB2A内の位置を示す。また、このライト要求は、データを書き込むべきページを示すページアドレスを含んでいてもよい。フラッシュストレージデバイス3のコントローラ4は、このライト要求を受信し、このライト要求に含まれるタグ、ブロック識別子、バッファアドレス(またはバッファ内オフセット)を保持する。 (2) The flash storage manager sends a write request (write command) to the flash storage device 3 . This write request includes a tag, block identifier (block address), buffer address (or offset within the buffer). The buffer address indicates the location within the UWB 2A where the data to be written is stored. This write request may also include a page address indicating the page to which the data should be written. The controller 4 of the flash storage device 3 receives this write request and holds the tag, block identifier and buffer address (or buffer offset) included in this write request.

(3) フラッシュプログラミングコントローラ13がこのデータを書き込み先ブロックBLKに書き込む際に、フラッシュストレージデバイス3のコントローラ4は、転送要求(Transfer Request)をホスト2に送出する。この転送要求は、保持されているバッファアドレス(またはバッファ内オフセット)を含む。あるいは、この転送要求は、保持されているタグと、保持されているバッファアドレス(またはバッファ内オフセット)とを含んでいてもよい。あるいは、この転送要求は、保持されているバッファアドレス(またはバッファ内オフセット)と、保持されているブロック識別子(ブロックアドレス)を含んでいてもよい。 (3) When the flash programming controller 13 writes this data to the write destination block BLK, the controller 4 of the flash storage device 3 sends a Transfer Request to the host 2 . This transfer request includes the retained buffer address (or offset within the buffer). Alternatively, the transfer request may include the retained tag and the retained buffer address (or offset within the buffer). Alternatively, the transfer request may include a retained buffer address (or offset within the buffer) and a retained block identifier (block address).

(4) ホスト2のフラッシュストレージマネージャは、少なくともバッファアドレス(またはバッファ内オフセット)を含む転送要求を受信すると、このバッファアドレス(またはバッファ内オフセット)によって指定されるUWB2A内の位置に格納されているデータをUWB2Aからフラッシュストレージデバイス3に転送する。例えば、NAND型フラッシュメモリ5がTLC-フラッシュメモリである場合には、3ページ分のデータがUWB2Aからフラッシュストレージデバイス3に転送される。転送要求は、転送されるべきデータの長さを含んでいてもよい。 (4) When the flash storage manager of the host 2 receives a transfer request including at least a buffer address (or an offset within the buffer), the transfer request is stored at a location within the UWB 2A specified by this buffer address (or an offset within the buffer). Data is transferred from the UWB 2A to the flash storage device 3. For example, if the NAND flash memory 5 is a TLC-flash memory, 3 pages worth of data are transferred from the UWB 2A to the flash storage device 3 . The transfer request may contain the length of the data to be transferred.

(5) フラッシュストレージデバイス3のコントローラ4は、このデータを受信し、そしてこのデータをフラッシュプログラミングコントローラ13を介してNAND型フラッシュメモリ5に転送し、このデータを書き込み先ブロックBLKに書き込む。フル・シーケンス・プログラム動作によって3ページ分のデータをある物理ページに書き込むケースにおいては、フラッシュプログラミングコントローラ13は、3ページ分のデータをNAND型フラッシュメモリ5内のページバッファ群に順次転送し、そして書き込み指示をNAND型フラッシュメモリ5に送出する。フラッシュプログラミングコントローラ13は、NAND型フラッシュメモリ5からのステータスをモニタすることによって書き込み動作(フル・シーケンス・プログラム動作)が終了したかどうかを判定することができる。 (5) The controller 4 of the flash storage device 3 receives this data and transfers this data to the NAND flash memory 5 via the flash programming controller 13 and writes this data to the write destination block BLK. In the case of writing 3 pages of data to a certain physical page by the full sequence program operation, the flash programming controller 13 sequentially transfers the 3 pages of data to the page buffer group in the NAND flash memory 5, and A write instruction is sent to the NAND flash memory 5 . The flash programming controller 13 can determine whether the write operation (full sequence program operation) has ended by monitoring the status from the NAND flash memory 5 .

(6) 書き込み動作が終了し且つこのデータ(ここでは3ページ分のデータ)の読み出しが可能になった場合、つまりフル・シーケンス・プログラム動作が成功で終了した場合、コントローラ4は、UWB2Aに保持されているこのデータ(ここでは3ページ分のデータ)が不要になったことをホスト2に通知する。この場合、フラッシュストレージデバイス3のコントローラ4は、タグ、ページアドレス、長さを含む書き込み完了(Write Done)をホスト2に送出してもよいし、無効化要求(invalidate
Request)をホスト2に送出してもよい。無効化要求は、読み出し可能になったデータが格納されているバッファアドレス(またはバッファ内オフセット)を含む。あるいは、無効化要求は、読み出し可能になったデータのタグと、読み出し可能になったデータが格納されているバッファアドレス(またはバッファ内オフセット)を含んでいてもよい。あるいは、この書き込み先ブロックBLKの最後の物理ページへのフル・シーケンス・プログラム動作が終了してこの書き込み先ブロックBLKの全体がデータで満たされた場合には、コントローラ4は、書き込み先ブロックBLKに対応するUWB領域が不要になったことをホスト2に通知する。この場合、コントローラ4は、クローズ要求(Close Request)をホスト2に送出する。クローズ要求は、書き込み先ブロックBLKのブロック識別子(ブロックアドレス)を含んでいてもよい。書き込み先ブロックBLKのブロック識別子を含むクローズ要求を受信した場合、ホスト2のフラッシュストレージマネージャは、この書き込み先ブロックBLKに関連づけられているUWB領域を解放し、このUWB領域を他の用途に使用する。この場合、フラッシュストレージマネージャは、この解放したUWB領域を、他の書き込み先ブロック(例えば新たにオープンされた書き込み先ブロック)用のUWB領域として再利用してもよい。
(6) When the write operation is finished and it becomes possible to read this data (three pages worth of data here), that is, when the full sequence program operation is finished successfully, the controller 4 stores data in the UWB 2A. The host 2 is notified that this data (three pages worth of data in this case) is no longer needed. In this case, the controller 4 of the flash storage device 3 may send a write completion (Write Done) including a tag, page address and length to the host 2, or an invalidate request (invalidate).
Request) may be sent to the host 2 . The invalidate request includes the buffer address (or offset within the buffer) where the data that has been made readable is stored. Alternatively, the invalidation request may include the tag of the data that has been made readable and the buffer address (or offset within the buffer) where the data that has been made readable is stored. Alternatively, when the full sequence program operation to the last physical page of this write destination block BLK is completed and the entire write destination block BLK is filled with data, the controller 4 writes to the write destination block BLK. Notify the host 2 that the corresponding UWB area is no longer needed. In this case, the controller 4 sends a Close Request to the host 2 . The close request may include the block identifier (block address) of the write destination block BLK. Upon receiving the close request containing the block identifier of the write destination block BLK, the flash storage manager of host 2 releases the UWB area associated with this write destination block BLK and uses this UWB area for other purposes. . In this case, the flash storage manager may reuse this released UWB area as a UWB area for other write destination blocks (eg, newly opened write destination blocks).

図7は、複数の書き込み先ブロックと複数のライトバッファ領域(UWB領域)との関係の例を示す。 FIG. 7 shows an example of the relationship between multiple write destination blocks and multiple write buffer areas (UWB areas).

ある書き込み先ブロックBLK#1に対応するライトバッファ領域(UWB領域#1)は、例えば、複数ページ分のデータを一時的に格納するための複数の記憶領域を含んでいてもよい。この場合、各記憶領域は、タグフィールド、バリッド/インバリッドフィールド、データ記憶フィールド、ページアドレスフィールドを含んでいてもよい。タグフィールドは、対応するデータのタグを格納する。バリッド/インバリッドフィールドは、対応するデータを保持することが必要であるか否かを示すバリッド/インバリッドフラグを保持する。データ記憶フィールドは、書き込み先ブロックBLK#1に書き込むべきデータを格納する。データ記憶フィールドは1ページ分のサイズを有していてもよい。ページアドレスフィールドはオプショナルなフィールドであり、ライト要求がページアドレスを含むならば、このページアドレスがページアドレスフィールドに格納される。 A write buffer area (UWB area #1) corresponding to a certain write destination block BLK#1 may include, for example, multiple storage areas for temporarily storing multiple pages of data. In this case, each storage area may include a tag field, a valid/invalid field, a data storage field, and a page address field. A tag field stores the tag of the corresponding data. The valid/invalid field holds a valid/invalid flag indicating whether it is necessary to hold the corresponding data. The data storage field stores data to be written to the write destination block BLK#1. A data storage field may have the size of a page. The page address field is an optional field, and if the write request contains a page address, this page address is stored in the page address field.

UWB領域#1に保持されているあるデータが不要になったことがフラッシュストレージデバイス3から通知された場合、ホスト2(フラッシュストレージマネージャ)は、このデータに対応する記憶領域内のバリッド/インバリッドフラグを無効を示す値に更新する。バリッド/インバリッドフラグを無効を示す値に更新された記憶領域は、書き込み先ブロックBLK#1に書き込むべき他のデータの格納に再利用される。 When the flash storage device 3 notifies that certain data held in the UWB area #1 is no longer needed, the host 2 (flash storage manager) validates/invalidates the data in the storage area corresponding to this data. Update the flag to a value indicating invalid. The storage area whose valid/invalid flag has been updated to a value indicating invalidity is reused to store other data to be written to the write destination block BLK#1.

図7に示されるUWB領域のデータ構造は一例であり、例えば、ページサイズとは異なるサイズでデータ(ライトデータ)がUWB領域で管理されてもよい。 The data structure of the UWB area shown in FIG. 7 is an example, and for example, data (write data) may be managed in the UWB area in a size different from the page size.

図8は、フラッシュストレージデバイス3とホスト側UWB2Aとの関係とホスト2とフラッシュストレージデバイス3とによって実行されるデータ読み出し処理を示す。 FIG. 8 shows the relationship between the flash storage device 3 and the host-side UWB 2A, and data read processing executed by the host 2 and the flash storage device 3. As shown in FIG.

(1) 上位ソフトウェアからのデータをリードするための要求に応答して、ホスト2のフラッシュストレージマネージャは、このデータをリードするためのリード要求をフラッシュストレージデバイス3に送出する。このリード要求は、たとえば、タグ、ブロック識別子(ブロックアドレス)、ページアドレス、長さを含んでいてもよい。 (1) In response to a request to read data from upper software, the flash storage manager of the host 2 sends a read request to the flash storage device 3 to read this data. This read request may include, for example, a tag, block identifier (block address), page address and length.

(2) このリード要求で指定されたデータの書き込み先ブロックBLKへの書き込み動作が既に終了し且つこのデータが読み出し可能であるならば、フラッシュストレージデバイス3のコントローラ4は、フラッシュプログラミングコントローラ13を介してこのデータを書き込み先ブロックBLKからリードする。 (2) If the write operation of the data specified by this read request to the write destination block BLK has already been completed and this data can be read, the controller 4 of the flash storage device 3 writes through the flash programming controller 13 This data is read from the write destination block BLK.

(3) フラッシュストレージデバイス3のコントローラ4は、リードされたデータを、このデータのタグと一緒に、ホスト2に送出する。 (3) The controller 4 of the flash storage device 3 sends the read data to the host 2 together with the tag of this data.

(3’) このリード要求で指定されたデータが読み出し可能でないならば、つまりこのデータの書き込み開始からこのデータが読み出し可能になるまでの期間中にこのデータをリードするためのリード要求をホスト2から受信した場合、フラッシュストレージデバイス3のコントローラ4は、UWB2Aからこのデータをリード要求に対する応答として返すように要求する転送要求を、ホスト2に送出する。この転送要求は、転送すべきUWB2A内のデータを特定可能な情報として、このデータに対応するバッファアドレス、またはこのデータに対応するバッファアドレスとこのデータに対応するブロック識別子の双方を含んでいてもよい。あるいは、この転送要求は、このデータに対応するタグを含んでいてもよいし、このデータに対応するブロック識別子とページアドレスを含んでいてもよい。 (3') If the data specified by this read request is not readable, that is, the host 2 issues a read request to read this data during the period from the start of writing this data until this data becomes readable. , the controller 4 of the flash storage device 3 sends a transfer request to the host 2 requesting that this data be returned from the UWB 2A as a response to the read request. This transfer request may contain both a buffer address corresponding to this data, or a buffer address corresponding to this data and a block identifier corresponding to this data as information that can identify the data within the UWB 2A to be transferred. good. Alternatively, this transfer request may contain a tag corresponding to this data, or may contain a block identifier and page address corresponding to this data.

(4’) ホスト2のフラッシュストレージマネージャは、このデータをUWB2Aからリードし、リードしたデータを、このデータのタグと一緒に、上位ソフトウェアに返す。 (4') The flash storage manager of the host 2 reads this data from the UWB 2A and returns the read data together with the tag of this data to the upper software.

あるいは、ホスト2のフラッシュストレージマネージャは、UWB2Aに格納されているあるデータが不要になったことがフラッシュストレージデバイス3から通知されるまでは、上位ソフトウェアからのこのデータをリードするための要求に応答して、リード要求をフラッシュストレージデバイス3に送出せずに、このデータをUWB2Aから直接リードしてもよい。この場合、データリード処理は以下のように実行される。 Alternatively, the flash storage manager of the host 2 responds to the request from the upper software to read the data stored in the UWB 2A until the flash storage device 3 notifies that the data is no longer needed. Then, without sending a read request to the flash storage device 3, the data may be read directly from the UWB 2A. In this case, data read processing is executed as follows.

(1”) UWB2Aに格納されているあるデータが不要になったことがフラッシュストレージデバイス3から通知されるまでは、ホスト2のフラッシュストレージマネージャは、上位ソフトウェアからのこのデータをリードするための要求に応答して、リード要求をUWB2Aに送出してこのデータをUWB2Aからリードする。このリード要求は、例えば、タグ、バッファアドレス、長さを含んでいてもよい。 (1") Until the flash storage device 3 notifies that certain data stored in the UWB 2A is no longer needed, the flash storage manager of the host 2 receives a request from the upper software to read this data. , a read request is sent to the UWB 2A to read this data from the UWB 2A.The read request may include, for example, a tag, a buffer address, and a length.

(2”) フラッシュストレージマネージャは、UWB2Aからリードされたデータを、このデータのタグと一緒に上位ソフトウェアに返す。 (2'') The flash storage manager returns the data read from UWB2A to the upper software together with the tag of this data.

図9は、フォギー・ファイン書き込みをサポートするフラッシュストレージデバイス3とホスト側UWB2Aとの関係とホスト2とフラッシュストレージデバイス3とによって実行されるデータ書き込み処理を示す。 FIG. 9 shows the relationship between the flash storage device 3 supporting foggy fine writing and the host-side UWB 2A, and the data write process performed by the host 2 and the flash storage device 3 .

ここでは、複数段階の書き込み動作(フォギー・ファイン・プログラム動作)によってライトデータを一つの書き込み先ブロックBLKに書き込む場合を想定する。 Here, it is assumed that write data is written to one write destination block BLK by a multi-step write operation (foggy fine program operation).

(1) ホスト2においては、フラッシュストレージマネージャは、上位ソフトウェアからのデータを書き込む要求に応じて、書き込むべきデータ、タグ、ブロック識別子を伴うライト要求をUWB2Aに格納する。なお、このライト要求は、書き込むべきデータの長さ(Length)を含んでもよいし、固定長のライトデータの書き込みを要求するケースにおいては、このライト要求は、長さ(Length)を含まなくてもよい。また、このライト要求は、データを書き込むべきページを示すページアドレスを含んでいてもよい。なお、上位ソフトウェアがこのライト要求を発行してもよく、そしてフラッシュストレージマネージャがこのライト要求を上位ソフトウェアから受信し、受信したライト要求をUWB2Aに格納してもよい。 (1) In the host 2, the flash storage manager stores a write request accompanied by data to be written, a tag, and a block identifier in the UWB 2A in response to a data write request from upper software. Note that this write request may include the length of the data to be written (Length), and in the case of requesting writing of fixed-length write data, this write request must not include the length (Length). good too. This write request may also include a page address indicating the page to which the data should be written. The upper software may issue this write request, and the flash storage manager may receive this write request from the upper software and store the received write request in the UWB 2A.

(2) フラッシュストレージマネージャは、フラッシュストレージデバイス3にライト要求(ライトコマンド)を送出する。このライト要求は、タグ、ブロック識別子(ブロックアドレス)、バッファアドレス(またはバッファ内オフセット)を含む。また、このライト要求は、データを書き込むべきページを示すページアドレスを含んでいてもよい。フラッシュストレージデバイス3のコントローラ4は、このライト要求を受信し、このライト要求に含まれるタグ、ブロック識別子、バッファアドレス(またはバッファ内オフセット)を保持する。 (2) The flash storage manager sends a write request (write command) to the flash storage device 3 . This write request includes a tag, block identifier (block address), buffer address (or offset within the buffer). This write request may also include a page address indicating the page to which the data should be written. The controller 4 of the flash storage device 3 receives this write request and holds the tag, block identifier and buffer address (or buffer offset) included in this write request.

(3) フラッシュプログラミングコントローラ13がこのデータの一段階目の書き込み動作(フォギー書き込み)を開始する際に、フラッシュストレージデバイス3のコントローラ4は、転送要求(Transfer Request)をホスト2に送出する。この転送要求は、保持されているバッファアドレス(またはバッファ内オフセット)を含む。あるいは、この転送要求は、保持されているタグと、保持されているバッファアドレス(またはバッファ内オフセット)とを含んでいてもよい。あるいは、この転送要求は、保持されているバッファアドレス(またはバッファ内オフセット)と、保持されているブロック識別子(ブロックアドレス)を含んでいてもよい。 (3) When the flash programming controller 13 starts the first stage write operation (foggy write) of this data, the controller 4 of the flash storage device 3 sends a transfer request (Transfer Request) to the host 2 . This transfer request includes the retained buffer address (or offset within the buffer). Alternatively, the transfer request may include the retained tag and the retained buffer address (or offset within the buffer). Alternatively, the transfer request may include a retained buffer address (or offset within the buffer) and a retained block identifier (block address).

(4) ホスト2のフラッシュストレージマネージャは、少なくともバッファアドレス(またはバッファ内オフセット)を含む転送要求を受信すると、このバッファアドレス(またはバッファ内オフセット)によって指定されるUWB2A内の位置に格納されているデータ(ここでは、「Foggy Data」として図示されている)をUWB2Aからフラッシュストレージデバイス3に転送する。例えば、NAND型フラッシュメモリ5がTLC-フラッシュメモリである場合には、3ページ分のデータがUWB2Aからフラッシュストレージデバイス3にFoggy Dataとして転送される。転送要求は、転送されるべきデータの長さを含んでいてもよい。 (4) When the flash storage manager of the host 2 receives a transfer request including at least a buffer address (or an offset within the buffer), the transfer request is stored at a location within the UWB 2A specified by this buffer address (or an offset within the buffer). Transfer the data (here illustrated as “Foggy Data”) from the UWB 2A to the flash storage device 3 . For example, if the NAND flash memory 5 is a TLC-flash memory, 3 pages of data are transferred from the UWB 2A to the flash storage device 3 as Foggy Data. The transfer request may contain the length of the data to be transferred.

(5) フラッシュストレージデバイス3のコントローラ4は、このデータを受信し、そしてこのデータをフラッシュプログラミングコントローラ13を介してNAND型フラッシュメモリ5に転送し、このデータを書き込み先ブロックBLKの書き込み先物理ページに書き込む(一段階目の書き込み:フォギー書き込み)。フォギー書き込みによって3ページ分のデータをある書き込み先物理ページに書き込むケースにおいては、フラッシュプログラミングコントローラ13は、3ページ分のデータをNAND型フラッシュメモリ5内のページバッファ群に順次転送し、そして一段階目の書き込み指示をNAND型フラッシュメモリ5に送出する。フラッシュプログラミングコントローラ13は、NAND型フラッシュメモリ5からのステータスをモニタすることによって書き込み動作(一段階目の書き込み動作)が終了したかどうかを判定することができる。通常、フォギー・ファイン・プログラム動作は、プログラムディスターブを削減するために、例えば、物理ページ#1のフォギー書き込み、物理ページ#2のフォギー書き込み、物理ページ#1のファイン書き込み、物理ページ#2のファイン書き込みのように、複数のワード線(複数の物理ページ)を往復しながら実行される。 (5) The controller 4 of the flash storage device 3 receives this data, transfers this data to the NAND flash memory 5 via the flash programming controller 13, and transfers this data to the write destination physical page of the write destination block BLK. (First stage write: Foggy write). In the case of writing 3 pages of data to a certain write destination physical page by foggy write, the flash programming controller 13 sequentially transfers the 3 pages of data to the page buffer group in the NAND flash memory 5, and then A second write instruction is sent to the NAND flash memory 5 . The flash programming controller 13 can determine whether the write operation (first-stage write operation) is completed by monitoring the status from the NAND flash memory 5 . Foggy fine program operations are typically performed to reduce program disturb, e.g. Like writing, it is executed while going back and forth between a plurality of word lines (a plurality of physical pages).

(6) この書き込み先物理ページへの二段階目の書き込み(ファイン書き込み)を実行するタイミングが到来すると、フラッシュストレージデバイス3のコントローラ4は、ファイン書き込みで書き込まれるべきデータ(フォギー書き込みで書き込まれたデータと同じデータ)を取得するために、転送要求(Transfer Request)をホスト2に再び送出する。この転送要求は、上述の保持されているバッファアドレス、つまり、処理(3)で送出した転送要求に含まれていたバッファアドレスと同じバッファアドレスを含む。 (6) When the timing for executing the second stage write (fine write) to this write destination physical page arrives, the controller 4 of the flash storage device 3 writes the data to be written by fine write (the data to be written by foggy write). In order to acquire the same data as the data), the transfer request (Transfer Request) is sent to the host 2 again. This transfer request contains the same buffer address as the buffer address held above, that is, the buffer address contained in the transfer request sent in process (3).

(7) ホスト2のフラッシュストレージマネージャは、少なくともバッファアドレス(またはバッファ内オフセット)を含む転送要求を受信すると、このバッファアドレス(またはバッファ内オフセット)によって指定されるUWB2A内の位置に格納されているデータ(ここでは、「Fine Data」として図示されている)をUWB2Aからフラッシュストレージデバイス3に転送する。Fine Dataは、Foggy Dataと同じデータである。例えば、NAND型フラッシュメモリ5がTLC-フラッシュメモリである場合には、上述の3ページ分のデータがUWB2Aからフラッシュストレージデバイス3にFine Dataとして転送される。転送要求は、転送されるべきデータの長さを含んでいてもよい。なお、ホスト2は、転送すべきデータがFoggy DataまたはFine Dataのいずれであるかを認識する必要は無い。 (7) When the flash storage manager of the host 2 receives a transfer request including at least a buffer address (or an offset within the buffer), the transfer request is stored at a location within the UWB 2A specified by this buffer address (or an offset within the buffer). Data (shown here as “Fine Data”) is transferred from the UWB 2A to the flash storage device 3 . Fine Data is the same data as Foggy Data. For example, if the NAND flash memory 5 is a TLC-flash memory, the data for the three pages described above is transferred from the UWB 2A to the flash storage device 3 as Fine Data. The transfer request may contain the length of the data to be transferred. The host 2 does not need to recognize whether the data to be transferred is Foggy Data or Fine Data.

(8) フラッシュストレージデバイス3のコントローラ4は、このデータを受信し、そしてこのデータをフラッシュプログラミングコントローラ13を介してNAND型フラッシュメモリ5に転送し、このデータを書き込み先ブロックBLKの上述の書き込み先物理ページに書き込む(二段階目の書き込み:ファイン書き込み)。ファイン書き込みによって3ページ分のデータをこの書き込み先物理ページに書き込むケースにおいては、フラッシュプログラミングコントローラ13は、フォギー書き込みで使用した3ページ分のデータと同じ3ページ分のデータをNAND型フラッシュメモリ5内のページバッファ群に順次転送し、そして二段階目の書き込み指示をNAND型フラッシュメモリ5に送出する。フラッシュプログラミングコントローラ13は、NAND型フラッシュメモリ5からのステータスをモニタすることによって書き込み動作(二段階目の書き込み動作)が終了したかどうかを判定することができる。 (8) The controller 4 of the flash storage device 3 receives this data, transfers this data to the NAND flash memory 5 via the flash programming controller 13, and transfers this data to the aforementioned write destination of the write destination block BLK. Write to the physical page (second stage write: fine write). In the case of writing 3 pages of data to this write destination physical page by fine writing, the flash programming controller 13 writes the same 3 pages of data to the NAND flash memory 5 as the 3 pages of data used in the foggy writing. , and a second stage write instruction is sent to the NAND flash memory 5 . The flash programming controller 13 can determine whether the write operation (second stage write operation) is completed by monitoring the status from the NAND flash memory 5 .

(9)二段階目の書き込み動作が終了し且つこのデータ(ここでは3ページ分のデータ)の読み出しが可能になった場合、つまりフォギー・ファイン・プログラム動作全てが成功で終了した場合、コントローラ4は、UWB2Aに保持されているこのデータ(ここでは3ページ分のデータ)が不要になったことをホスト2に通知する。この場合、フラッシュストレージデバイス3のコントローラ4は、タグ、ページアドレス、長さを含む書き込み完了(Write Done)をホスト2に送出してもよいし、無効化要求(invalidate Request)をホスト2に送出してもよい。無効化要求は、読み出し可能になったデータが格納されているバッファアドレス(またはバッファ内オフセット)を含む。あるいは、無効化要求は、読み出し可能になったデータのタグと、読み出し可能になったデータが格納されているバッファアドレス(またはバッファ内オフセット)を含んでいてもよい。あるいは、この書き込み先ブロックBLKの最後の物理ページへのフォギー・ファイン・プログラム動作が終了してこの書き込み先ブロックBLKの全体がデータで満たされた場合には、コントローラ4は、書き込み先ブロックBLKに対応するUWB領域が不要になったことをホスト2に通知する。この場合、コントローラ4は、クローズ要求(Close Request)をホスト2に送出する。クローズ要求は、書き込み先ブロックBLKのブロック識別子(ブロックアドレス)を含んでいてもよい。書き込み先ブロックBLKのブロック識別子を含むクローズ要求を受信した場合、ホスト2のフラッシュストレージマネージャは、この書き込み先ブロックBLKに関連づけられているUWB領域を解放し、このUWB領域を他の用途に使用する。この場合、フラッシュストレージマネージャは、この解放したUWB領域を、他の書き込み先ブロック(例えば新たにオープンされた書き込み先ブロック)用のUWB領域として再利用してもよい。 (9) When the second stage write operation is completed and it becomes possible to read this data (three pages of data here), that is, when all the foggy fine program operations are completed successfully, the controller 4 notifies the host 2 that this data held in the UWB 2A (here, data for three pages) is no longer needed. In this case, the controller 4 of the flash storage device 3 may send a write completion (Write Done) including a tag, page address and length to the host 2, or send an invalidate request to the host 2. You may The invalidate request includes the buffer address (or offset within the buffer) where the data that has been made readable is stored. Alternatively, the invalidation request may include the tag of the data that has been made readable and the buffer address (or offset within the buffer) where the data that has been made readable is stored. Alternatively, when the foggy fine program operation to the last physical page of this write destination block BLK is completed and the entire write destination block BLK is filled with data, the controller 4 writes to the write destination block BLK. Notify the host 2 that the corresponding UWB area is no longer needed. In this case, the controller 4 sends a Close Request to the host 2 . The close request may include the block identifier (block address) of the write destination block BLK. Upon receiving the close request containing the block identifier of the write destination block BLK, the flash storage manager of host 2 releases the UWB area associated with this write destination block BLK and uses this UWB area for other purposes. . In this case, the flash storage manager may reuse this released UWB area as a UWB area for other write destination blocks (eg, newly opened write destination blocks).

図10は、フォギー・ファイン書き込みをサポートするフラッシュストレージデバイス3とホスト側UWB2Aとの関係とホスト2とフラッシュストレージデバイス3とによって実行されるデータ読み出し処理を示す。 FIG. 10 shows the relationship between the flash storage device 3 supporting foggy fine writing and the host-side UWB 2A, and the data read processing performed by the host 2 and the flash storage device 3 .

(1) 上位ソフトウェアからのデータをリードするための要求に応答して、ホスト2のフラッシュストレージマネージャは、このデータをリードするためのリード要求をフラッシュストレージデバイス3に送出する。このリード要求は、たとえば、タグ、ブロック識別子(ブロックアドレス)、ページアドレス、長さを含んでいてもよい。 (1) In response to a request to read data from upper software, the flash storage manager of the host 2 sends a read request to the flash storage device 3 to read this data. This read request may include, for example, a tag, block identifier (block address), page address and length.

(2) このリード要求で指定されたデータの書き込み先ブロックBLKへの書き込み動作が既に終了し且つこのデータが読み出し可能であるならば、つまりこのデータのフォギー書き込みとこのデータのファイン書き込みの双方が終了しているならば、フラッシュストレージデバイス3のコントローラ4は、フラッシュプログラミングコントローラ13を介してこのデータを書き込み先ブロックBLKからリードする。 (2) If the write operation of the data specified by this read request to the write destination block BLK has already been completed and this data is readable, that is, both the foggy write of this data and the fine write of this data are possible. If so, controller 4 of flash storage device 3 reads this data from destination block BLK via flash programming controller 13 .

(3) フラッシュストレージデバイス3のコントローラ4は、リードされたデータを、このデータのタグと一緒に、ホスト2に送出する。 (3) The controller 4 of the flash storage device 3 sends the read data to the host 2 together with the tag of this data.

(3’) このリード要求で指定されたデータが読み出し可能でないならば、つまりこのデータの書き込み開始からこのデータが読み出し可能になるまでの期間中にこのデータをリードするためのリード要求をホスト2から受信した場合、フラッシュストレージデバイス3のコントローラ4は、UWB2Aからこのデータをリード要求に対する応答として返すように要求する転送要求を、ホスト2に送出する。この転送要求は、このデータに対応するバッファアドレスを含んでいてもよい。 (3') If the data specified by this read request is not readable, that is, the host 2 issues a read request to read this data during the period from the start of writing this data until this data becomes readable. , the controller 4 of the flash storage device 3 sends a transfer request to the host 2 requesting that this data be returned from the UWB 2A as a response to the read request. This transfer request may include the buffer address corresponding to this data.

(4’) ホスト2のフラッシュストレージマネージャは、このデータをUWB2Aからリードし、リードしたデータを、このデータのタグと一緒に、上位ソフトウェアに返す。 (4') The flash storage manager of the host 2 reads this data from the UWB 2A and returns the read data together with the tag of this data to the upper software.

あるいは、ホスト2のフラッシュストレージマネージャは、UWB2Aに格納されているあるデータが不要になったことがフラッシュストレージデバイス3から通知されるまでは、上位ソフトウェアからのこのデータをリードするための要求に応答して、リード要求をフラッシュストレージデバイス3に送出せずに、このデータをUWB2Aから直接リードしてもよい。この場合、データリード処理は以下のように実行される。 Alternatively, the flash storage manager of the host 2 responds to the request from the upper software to read the data stored in the UWB 2A until the flash storage device 3 notifies that the data is no longer needed. Then, without sending a read request to the flash storage device 3, the data may be read directly from the UWB 2A. In this case, data read processing is executed as follows.

(1”) UWB2Aに格納されているあるデータが不要になったことがフラッシュストレージデバイス3から通知されるまでは、ホスト2のフラッシュストレージマネージャは、上位ソフトウェアからのこのデータをリードするための要求に応答して、リード要求をUWB2Aに送出してこのデータをUWB2Aからリードする。このリード要求は、例えば、タグ、バッファアドレス、長さを含んでいてもよい。 (1") Until the flash storage device 3 notifies that certain data stored in the UWB 2A is no longer needed, the flash storage manager of the host 2 receives a request from the upper software to read this data. , a read request is sent to the UWB 2A to read this data from the UWB 2A.The read request may include, for example, a tag, a buffer address, and a length.

(2”) フラッシュストレージマネージャは、UWB2Aからリードされたデータを、このデータのタグと一緒に上位ソフトウェアに返す。 (2'') The flash storage manager returns the data read from UWB2A to the upper software together with the tag of this data.

図11のシーケンス図は、ホスト2とフラッシュストレージデバイス2とによって実行されるデータ書き込み処理の手順を示す。 The sequence diagram of FIG. 11 shows the procedure of data write processing executed by the host 2 and the flash storage device 2 .

ホスト2は、ある書き込み先ブロックに書き込むべきデータ(ライトデータ)をこの書き込み先ブロックに関連づけられたUWB領域に格納し、そしてブロック識別子とバッファアドレス(またはバッファ内オフセット)とを含むライト要求をフラッシュストレージデバイス3に送出する(ステップS11)。ブロック識別子は、このライトデータが書き込まれるべき書き込み先ブロックのブロックアドレスである。バッファアドレスは、このライトデータが格納されているUWB領域内の位置を示す。 The host 2 stores data (write data) to be written to a certain write destination block in the UWB area associated with this write destination block, and flushes a write request including a block identifier and a buffer address (or an offset within the buffer). It is sent to the storage device 3 (step S11). The block identifier is the block address of the write destination block to which this write data is to be written. The buffer address indicates the position within the UWB area where this write data is stored.

フラッシュストレージデバイス3のコントローラ4は、このライト要求をホスト2から受信し、このライト要求内のブロック識別子とバッファアドレス(またはバッファ内オフセット)を保持する(ステップS21)。この場合、コントローラ4は、ブロック識別子とバッファアドレスをDRAM6上のライトバッファ31に格納することによってこれらブロック識別子とバッファアドレスを保持してもよい。 The controller 4 of the flash storage device 3 receives this write request from the host 2 and holds the block identifier and buffer address (or buffer offset) in this write request (step S21). In this case, the controller 4 may retain these block identifiers and buffer addresses by storing them in the write buffer 31 on the DRAM 6 .

保持しているブロック識別子によって指定される書き込み先ブロックにこのライト要求に対応するライトデータを書き込む際、フラッシュストレージデバイス3のコントローラ4は、保持しているバッファアドレス(またはバッファ内オフセット)を含む転送要求をホスト2に送出する(ステップS22)。 When writing the write data corresponding to this write request to the write destination block specified by the held block identifier, the controller 4 of the flash storage device 3 performs transfer including the held buffer address (or buffer offset). A request is sent to the host 2 (step S22).

ホスト2がこの転送要求を受信すると、ホスト2は、このライトデータをUWB領域からフラッシュストレージデバイス3に転送する(ステップS12)。 When the host 2 receives this transfer request, the host 2 transfers this write data from the UWB area to the flash storage device 3 (step S12).

フラッシュストレージデバイス3のコントローラ4は、ホスト2から転送されるこのライトデータを受信する(ステップS23)。コントローラ4は、受信したライトデータを例えばDRAM6上のライトバッファ31等に格納することによって保持する(ステップS24)。 The controller 4 of the flash storage device 3 receives this write data transferred from the host 2 (step S23). The controller 4 holds the received write data by storing it in, for example, the write buffer 31 on the DRAM 6 (step S24).

コントローラ4は、受信したライトデータをNAND型フラッシュメモリ5に転送する(ステップS25)。NAND型フラッシュメモリ5へのライトデータの転送が完了するまで、コントローラ4は、このライトデータを保持する。そして、コントローラ4は、このライトデータを、保持しているブロック識別子によって指定される書き込み先ブロックに書き込む(ステップS26)。この場合、ライトデータが書き込まれるべき書き込み先ブロック内の書き込み先ページはコントローラ4によって決定される。なお、ライト要求が書き込み先ページを指定するページアドレスを含んでいてもよい。 The controller 4 transfers the received write data to the NAND flash memory 5 (step S25). The controller 4 holds the write data until the transfer of the write data to the NAND flash memory 5 is completed. The controller 4 then writes this write data to the write destination block specified by the held block identifier (step S26). In this case, the controller 4 determines the write destination page in the write destination block to which the write data is to be written. Note that the write request may include a page address specifying the write destination page.

このライトデータの書き込み動作が終了し且つこのライトデータが読み出し可能になった場合(フル・シーケンス・プログラム動作においてはフル・シーケンス・プログラム動作が終了した場合)、コントローラ4は、UWB領域に格納されているこのライトデータが不要になったことをホスト2に通知する(ステップS27)。 When this write data write operation is completed and this write data becomes readable (when the full sequence program operation is completed in the full sequence program operation), the controller 4 stores the write data in the UWB area. The host 2 is notified that this write data stored is no longer needed (step S27).

図12のフローチャートは、フラッシュストレージデバイス3によって実行される通知処理の手順を示す。 The flowchart in FIG. 12 shows the procedure of notification processing executed by the flash storage device 3 .

フラッシュストレージデバイス3のコントローラ4は、書き込み先ブロックへのデータの書き込み動作が終了し且つこのデータが読み出し可能になったか否かを判定する(ステップS31)。 The controller 4 of the flash storage device 3 determines whether or not the data write operation to the write destination block has been completed and the data can be read (step S31).

データの書き込み動作が終了し且つこのデータが読み出し可能になったならば(ステップS31のYES)、コントローラ4は、この書き込み先ブロックの最後のページ(最後の物理ページ)への書き込み動作が終了してこの書き込み先ブロックの全体がデータで満たされたか否かを判定する(ステップS32)。 When the data write operation is completed and this data becomes readable (YES in step S31), the controller 4 completes the write operation to the last page (last physical page) of this write destination block. It is determined whether or not the entire write destination block is filled with data (step S32).

この書き込み先ブロックに利用可能な物理ページ(未書き込みの物理ページ)が残っているならば(ステップS32のNO)、コントローラ4は、UWB領域に保持されている読み出し可能になったデータが不要になったことをホスト2に通知するために、書き込み完了(Write Done)または無効化要求(invalidate Request)をホスト2に送出する(ステップS33)。 If there are physical pages (unwritten physical pages) that can be used in this write destination block (NO in step S32), the controller 4 makes the readable data held in the UWB area unnecessary. In order to notify the host 2 of the fact, write completion (Write Done) or invalidate request (invalidate Request) is sent to the host 2 (step S33).

この書き込み先ブロックの最後のページ(最後の物理ページ)への書き込み動作が終了してこの書き込み先ブロックの全体がデータで満たされたならば(ステップS32のYES)、コントローラ4は、この書き込み先ブロックに対応するUWB領域全体が不要になったことをホスト2に通知するために、クローズ要求(Close Request)をホスト2に送出する(ステップS34)。 If the write operation to the last page (last physical page) of this write destination block is completed and the entire write destination block is filled with data (YES in step S32), the controller 4 A Close Request is sent to the host 2 to notify the host 2 that the entire UWB area corresponding to the block is no longer needed (step S34).

図13のフローチャートは、転送要求の受信に応じて実行されるホスト側処理の手順を示す。 The flowchart in FIG. 13 shows the procedure of host-side processing executed in response to reception of a transfer request.

ホスト2は、ブロック識別子とバッファアドレス(またはバッファ内オフセット)とを含むライト要求をフラッシュストレージデバイス3に送出する(ステップS40)。ホスト2は、フラッシュストレージデバイス3から転送要求が受信された否かを判定する(ステップS41)。 The host 2 sends a write request including a block identifier and a buffer address (or offset within the buffer) to the flash storage device 3 (step S40). The host 2 determines whether or not a transfer request has been received from the flash storage device 3 (step S41).

フラッシュストレージデバイス3から転送要求が受信されたならば(ステップS41のYES)、ホスト2は、転送要求内のバッファアドレス(またはバッファ内オフセット)によって指定されるUWB領域内の位置に格納されているデータをフラッシュストレージデバイス3に転送する(ステップS42)。そして、ホスト2は、UWB領域内の不要データがフラッシュストレージデバイス3から通知されたか否か、またはクローズ要求(Close Request)がフラッシュストレージデバイス3から受信されたか否かを判定する(ステップS43、S44)。 If a transfer request is received from the flash storage device 3 (YES in step S41), the host 2 is stored at a location within the UWB area specified by the buffer address (or buffer offset) in the transfer request. The data is transferred to the flash storage device 3 (step S42). Then, the host 2 determines whether or not the flash storage device 3 has notified unnecessary data in the UWB area, or whether or not a Close Request has been received from the flash storage device 3 (steps S43 and S44). ).

UWB領域内の不要データがフラッシュストレージデバイス3から通知されたならば(ステップS43のYES)、ホスト2は、この不要データに対応するバリッド/インバリッドフラグを無効を示す値に更新して、この不要データが格納されているUWB領域内の一つの記憶領域を解放する(ステップS44)。ホスト2は、この解放された記憶領域を、このUWB領域に対応する書き込み先ブロックに書き込むべき新たなライトデータのための記憶領域として再利用することができる。 If unnecessary data in the UWB area is notified from the flash storage device 3 (YES in step S43), the host 2 updates the valid/invalid flag corresponding to this unnecessary data to a value indicating invalidity. One storage area in the UWB area in which unnecessary data is stored is released (step S44). The host 2 can reuse this released storage area as a storage area for new write data to be written to the write destination block corresponding to this UWB area.

このように、本実施形態では、あるデータの書き込み動作が終了してこのデータが読み出し可能になると、UWB領域内のこのデータが不要になったことがフラッシュストレージデバイス3からホスト2に通知される。したがって、このデータがNAND型フラッシュメモリ5から読み出し可能になるまでは、このデータはUWB領域内に保持される。 Thus, in this embodiment, when the write operation of certain data is completed and this data becomes readable, the flash storage device 3 notifies the host 2 that this data in the UWB area is no longer needed. . Therefore, this data is held in the UWB area until it becomes readable from the NAND flash memory 5 .

クローズ要求(Close Request)がフラッシュストレージデバイス3から受信されたならば(ステップS45のYES)、ホスト2は、クローズ要求に含まれるブロック識別子の書き込み先ブロックに関連付けられたUWB領域全体を解放する(ステップS46)。ホスト2は、この解放されたUWB領域を、フラッシュストレージデバイス3によって新たに割り当てられた書き込み先ブロック用のUWB領域として再利用することができる。 If a close request (Close Request) is received from the flash storage device 3 (YES in step S45), the host 2 releases the entire UWB area associated with the write destination block of the block identifier included in the close request ( step S46). The host 2 can reuse this released UWB area as a UWB area for a write destination block newly allocated by the flash storage device 3 .

図14のフローチャートは、リード要求の受信に応じてフラッシュストレージデバイス3によって実行されるデータ読み出し動作の手順を示す。 The flowchart of FIG. 14 shows the procedure of data read operation performed by the flash storage device 3 in response to receiving a read request.

フラッシュストレージデバイス3のコントローラ4は、リード要求をホスト2から受信する(ステップS51)。コントローラ4は、リード要求によって指定されたリードすべきデータが、書き込み先ブロックへの書き込み動作が終了し且つ読み出し可能なデータであるか否かを判定する(ステップS52)。 The controller 4 of the flash storage device 3 receives a read request from the host 2 (step S51). The controller 4 determines whether or not the data to be read specified by the read request is data that has been written to the write destination block and is readable (step S52).

リードすべきデータが、書き込み先ブロックへの書き込み動作が終了し且つ読み出し可能なデータであるならば(ステップS52のYES)、コントローラ4は、リードすべきデータをNAND型フラッシュメモリ5からリードし(ステップS53)、このリードしたデータをホスト2に返す(ステップS54)。 If the data to be read has been written to the write destination block and is readable data (YES in step S52), the controller 4 reads the data to be read from the NAND flash memory 5 ( Step S53), and returns the read data to the host 2 (step S54).

一方、リードすべきデータが、書き込み先ブロックへの書き込み動作が終了し且つ読み出し可能なデータではないならば、つまりこのデータの書き込み開始からこのデータが読み出し可能になるまでの期間内にこのデータに対するリード要求がホスト2から受信されたならば(ステップS52のNO)、コントローラ4は、UWB領域からこのデータをリード要求に対する応答として返すように要求する転送要求を、ホスト2に送出する(ステップS55)。 On the other hand, if the data to be read has completed the write operation to the write destination block and is not readable data, that is, if the data is read within the period from the start of writing the data until the data becomes readable. If a read request is received from the host 2 (NO in step S52), the controller 4 sends a transfer request to the host 2 requesting that this data be returned from the UWB area as a response to the read request (step S55). ).

図15のフローチャートは、データ読み出しのためのホスト側処理の手順を示す。 The flowchart of FIG. 15 shows the procedure of host-side processing for reading data.

ホスト2は、リードすべきデータがUWB領域内に存在するか否かにかかわらず、このデータのリードを要求するリード要求をフラッシュストレージデバイス3に送出する(ステップS61)。 The host 2 sends a read request to the flash storage device 3 to read the data regardless of whether the data to be read exists in the UWB area (step S61).

そして、ホスト2は、UWB領域からこのデータを返す(リードする)ように要求する転送要求がフラッシュストレージデバイス3から受信されたか否かを判定する(ステップS62)。 Then, the host 2 determines whether or not a transfer request requesting to return (read) this data from the UWB area has been received from the flash storage device 3 (step S62).

この転送要求がフラッシュストレージデバイス3から受信されたならば(ステップS62のYES)、ホスト2は、このデータをUWB領域からリードする(ステップS63)。 If this transfer request is received from the flash storage device 3 (YES in step S62), the host 2 reads this data from the UWB area (step S63).

図16は、ストリーム書き込みをサポートするフラッシュストレージデバイス3とホスト側UWB2Aとの関係とホスト2とフラッシュストレージデバイス3とによって実行されるデータ書き込み処理を示す。 FIG. 16 shows the relationship between the flash storage device 3 that supports stream writing and the host-side UWB 2A, and data write processing performed by the host 2 and the flash storage device 3 .

ここでは、フル・シーケンス・プログラム動作によってライトデータを一つの書き込み先ブロックBLKに書き込む場合を想定する。 Here, it is assumed that write data is written to one write destination block BLK by a full sequence program operation.

(1) ホスト2においては、上位ソフトウェア(アプリケーションプログラムまたはファイルシステム)からのデータを書き込む要求に応じて、フラッシュストレージマネージャは、書き込むべきデータ、ストリームID、LBA、長さを伴うライト要求をUWB2Aに格納する。ストリームIDは、複数の書き込み先ブロックに関連付けられている複数のストリーム内のあるストリームの識別子である。なお、上位ソフトウェアがこのライト要求を発行してもよく、そしてフラッシュストレージマネージャがこのライト要求を上位ソフトウェアから受信し、受信したライト要求をUWB2Aに格納してもよい。 (1) In the host 2, in response to a data write request from upper software (application program or file system), the flash storage manager sends a write request with data to be written, stream ID, LBA, and length to UWB 2A. Store. A stream ID is an identifier of a stream in multiple streams associated with multiple destination blocks. The upper software may issue this write request, and the flash storage manager may receive this write request from the upper software and store the received write request in the UWB 2A.

(2) フラッシュストレージマネージャは、フラッシュストレージデバイス3にライト要求(ライトコマンド)を送出する。このライト要求は、ストリームID、LBA、長さ、バッファアドレス(またはバッファ内オフセット)を含む。バッファアドレスは、書き込むべきデータが格納されているUWB2A内の位置を示す。フラッシュストレージデバイス3のコントローラ4は、このライト要求を受信し、このライト要求に含まれるストリームID、LBA、長さ、バッファアドレスを保持する。 (2) The flash storage manager sends a write request (write command) to the flash storage device 3 . This write request includes stream ID, LBA, length, buffer address (or offset within buffer). The buffer address indicates the location within the UWB 2A where the data to be written is stored. The controller 4 of the flash storage device 3 receives this write request and holds the stream ID, LBA, length and buffer address included in this write request.

(3) フラッシュプログラミングコントローラ13がこのデータを書き込み先ブロックBLKに書き込む際に、フラッシュストレージデバイス3のコントローラ4は、転送要求(Transfer Request)をホスト2に送出する。この転送要求は、保持されているバッファアドレス(またはバッファ内オフセット)を含む。あるいは、この転送要求は、保持されているLBAと、保持されているバッファアドレス(またはバッファ内オフセット)とを含んでいてもよい。あるいは、この転送要求は、保持されているバッファアドレス(またはバッファ内オフセット)と、保持されているストリームIDを含んでいてもよい。あるいは、この転送要求は、保持されているバッファアドレス(またはバッファ内オフセット)と、保持されているストリームIDに関連付けられている書き込み先ブロックのブロック識別子(ブロックアドレス)を含んでもよい。 (3) When the flash programming controller 13 writes this data to the write destination block BLK, the controller 4 of the flash storage device 3 sends a Transfer Request to the host 2 . This transfer request includes the retained buffer address (or offset within the buffer). Alternatively, the transfer request may include the retained LBA and the retained buffer address (or offset within the buffer). Alternatively, the transfer request may include the retained buffer address (or offset within the buffer) and the retained stream ID. Alternatively, the transfer request may include the retained buffer address (or offset within the buffer) and the block identifier (block address) of the destination block associated with the retained stream ID.

(4) ホスト2のフラッシュストレージマネージャは、少なくともバッファアドレス(またはバッファ内オフセット)を含む転送要求を受信すると、このバッファアドレス(またはバッファ内オフセット)によって指定されるUWB2A内の位置に格納されているデータをUWB2Aからフラッシュストレージデバイス3に転送する。例えば、NAND型フラッシュメモリ5がTLC-フラッシュメモリである場合には、3ページ分のデータがUWB2Aからフラッシュストレージデバイス3に転送される。転送要求は、転送されるべきデータの長さを含んでいてもよい。 (4) When the flash storage manager of the host 2 receives a transfer request including at least a buffer address (or an offset within the buffer), the transfer request is stored at a location within the UWB 2A specified by this buffer address (or an offset within the buffer). Data is transferred from the UWB 2A to the flash storage device 3. For example, if the NAND flash memory 5 is a TLC-flash memory, 3 pages worth of data are transferred from the UWB 2A to the flash storage device 3 . The transfer request may contain the length of the data to be transferred.

(5) フラッシュストレージデバイス3のコントローラ4は、このデータを受信し、そしてこのデータをフラッシュプログラミングコントローラ13を介してNAND型フラッシュメモリ5に転送し、このデータを書き込み先ブロックBLKに書き込む。フル・シーケンス・プログラム動作によって3ページ分のデータをある物理ページに書き込むケースにおいては、フラッシュプログラミングコントローラ13は、3ページ分のデータをNAND型フラッシュメモリ5内のページバッファ群に順次転送し、そして書き込み指示をNAND型フラッシュメモリ5に送出する。フラッシュプログラミングコントローラ13は、NAND型フラッシュメモリ5からのステータスをモニタすることによって書き込み動作(フル・シーケンス・プログラム動作)が終了したかどうかを判定することができる。 (5) The controller 4 of the flash storage device 3 receives this data and transfers this data to the NAND flash memory 5 via the flash programming controller 13 and writes this data to the write destination block BLK. In the case of writing 3 pages of data to a certain physical page by the full sequence program operation, the flash programming controller 13 sequentially transfers the 3 pages of data to the page buffer group in the NAND flash memory 5, and A write instruction is sent to the NAND flash memory 5 . The flash programming controller 13 can determine whether the write operation (full sequence program operation) has ended by monitoring the status from the NAND flash memory 5 .

(6) 書き込み動作が終了し且つこのデータ(ここでは3ページ分のデータ)の読み出しが可能になった場合、つまりフル・シーケンス・プログラム動作が成功で終了した場合、コントローラ4は、UWB2Aに保持されているこのデータ(ここでは3ページ分のデータ)が不要になったことをホスト2に通知する。この場合、フラッシュストレージデバイス3のコントローラ4は、LBA、長さを含む書き込み完了(Write Done)をホスト2に送出してもよいし、無効化要求(invalidate Request)をホスト2に送出してもよい。無効化要求は、読み出し可能になったデータが格納されているバッファアドレス(またはバッファ内オフセット)を含む。あるいは、無効化要求は、読み出し可能になったデータのLBAと、読み出し可能になったデータが格納されているバッファアドレス(またはバッファ内オフセット)を含んでいてもよい。あるいは、この書き込み先ブロックBLKの最後の物理ページへのフル・シーケンス・プログラム動作が終了してこの書き込み先ブロックBLKの全体がデータで満たされた場合には、コントローラ4は、書き込み先ブロックBLKに対応するUWB領域が不要になったことをホスト2に通知する。この場合、コントローラ4は、クローズ要求(Close Request)をホスト2に送出する。クローズ要求は、書き込み先ブロックBLKのブロック識別子(ブロックアドレス)を含んでいてもよい。書き込み先ブロックBLKのブロック識別子を含むクローズ要求を受信した場合、ホスト2のフラッシュストレージマネージャは、この書き込み先ブロックBLKに関連づけられているUWB領域を解放し、このUWB領域を他の用途に使用する。この場合、フラッシュストレージマネージャは、この解放したUWB領域を、他の書き込み先ブロック(例えば新たにオープンされた書き込み先ブロック)用のUWB領域として再利用してもよい。 (6) When the write operation is finished and it becomes possible to read this data (three pages worth of data here), that is, when the full sequence program operation is finished successfully, the controller 4 stores data in the UWB 2A. The host 2 is notified that this data (three pages worth of data in this case) is no longer needed. In this case, the controller 4 of the flash storage device 3 may send a write completion (Write Done) including LBA and length to the host 2, or may send an invalidate request to the host 2. good. The invalidate request includes the buffer address (or offset within the buffer) where the data that has been made readable is stored. Alternatively, the invalidation request may include the LBA of the data that was made readable and the buffer address (or offset within the buffer) where the data that was made readable is stored. Alternatively, when the full sequence program operation to the last physical page of this write destination block BLK is completed and the entire write destination block BLK is filled with data, the controller 4 writes to the write destination block BLK. Notify the host 2 that the corresponding UWB area is no longer needed. In this case, the controller 4 sends a Close Request to the host 2 . The close request may include the block identifier (block address) of the write destination block BLK. Upon receiving the close request containing the block identifier of the write destination block BLK, the flash storage manager of host 2 releases the UWB area associated with this write destination block BLK and uses this UWB area for other purposes. . In this case, the flash storage manager may reuse this released UWB area as a UWB area for other write destination blocks (eg, newly opened write destination blocks).

図17は、複数のストリームIDとこれらストリームIDに関連付けられた複数の書き込み先ブロックとの関係を示す。 FIG. 17 shows the relationship between multiple stream IDs and multiple write destination blocks associated with these stream IDs.

ここでは、ストリームID#1のストリームに書き込み先フロックBLK#1が関連付けられており、ストリームID#2のストリームに書き込み先フロックBLK#2が関連付けられており、ストリームID#3のストリームに書き込み先フロックBLK#3が関連付けられており、そしてストリームID#nのストリームに書き込み先フロックBLK#nが関連付けられている場合が例示されている。 Here, the stream with stream ID #1 is associated with the write destination block BLK#1, the stream with stream ID #2 is associated with the write destination block BLK#2, and the stream with stream ID #3 is associated with the write destination block BLK#1. A case is exemplified in which block BLK#3 is associated, and write destination block BLK#n is associated with the stream of stream ID#n.

ストリームID#1を含むライト要求によって指定されるライトデータは、書き込み先フロックBLK#1に書き込まれる。ストリームID#2を含むライト要求によって指定されるライトデータは、書き込み先フロックBLK#2に書き込まれる。ストリームID#3を含むライト要求によって指定されるライトデータは、書き込み先フロックBLK#3に書き込まれる。ストリームID#nを含むライト要求によって指定されるライトデータは、書き込み先フロックBLK#nに書き込まれる。 The write data specified by the write request including stream ID #1 is written to the write destination block BLK#1. The write data specified by the write request including stream ID #2 is written to write destination block BLK#2. The write data specified by the write request including stream ID #3 is written to write destination block BLK#3. Write data specified by a write request including stream ID#n is written to write destination block BLK#n.

図18は、ストリーム書き込みをサポートするフラッシュストレージデバイス3とホスト側UWB2Aとの関係とホスト2とフラッシュストレージデバイス3とによって実行されるデータ読み出し処理を示す。 FIG. 18 shows the relationship between the flash storage device 3 that supports stream writing and the host-side UWB 2A, and data read processing performed by the host 2 and the flash storage device 3 .

(1) 上位ソフトウェアからのデータをリードするための要求に応答して、ホスト2のフラッシュストレージマネージャは、このデータをリードするためのリード要求をフラッシュストレージデバイス3に送出する。このリード要求は、たとえば、LBA、長さを含んでいてもよい。 (1) In response to a request to read data from upper software, the flash storage manager of the host 2 sends a read request to the flash storage device 3 to read this data. This read request may include, for example, LBA, length.

(2) このリード要求で指定されたデータの書き込み先ブロックBLKへの書き込み動作が既に終了し且つこのデータが読み出し可能であるならば、フラッシュストレージデバイス3のコントローラ4は、フラッシュプログラミングコントローラ13を介してこのデータを書き込み先ブロックBLKからリードする。 (2) If the write operation of the data specified by this read request to the write destination block BLK has already been completed and this data can be read, the controller 4 of the flash storage device 3 writes through the flash programming controller 13 This data is read from the write destination block BLK.

(3) フラッシュストレージデバイス3のコントローラ4は、リードされたデータを、このデータのLBAと一緒に、ホスト2に送出する。 (3) The controller 4 of the flash storage device 3 sends the read data to the host 2 together with the LBA of this data.

(3’) このリード要求で指定されたデータが読み出し可能でないならば、つまりこのデータの書き込み開始からこのデータが読み出し可能になるまでの期間中にこのデータをリードするためのリード要求をホスト2から受信した場合、フラッシュストレージデバイス3のコントローラ4は、UWB2Aからこのデータをリード要求に対する応答として返すように要求する転送要求を、ホスト2に送出する。この転送要求は、このデータに対応するバッファアドレスを含んでいてもよい。 (3') If the data specified by this read request is not readable, that is, the host 2 issues a read request to read this data during the period from the start of writing this data until this data becomes readable. , the controller 4 of the flash storage device 3 sends a transfer request to the host 2 requesting that this data be returned from the UWB 2A as a response to the read request. This transfer request may include the buffer address corresponding to this data.

(4’) ホスト2のフラッシュストレージマネージャは、このデータをUWB2Aからリードし、リードしたデータを、このデータのLBAと一緒に、上位ソフトウェアに返す。 (4') The flash storage manager of the host 2 reads this data from the UWB 2A and returns the read data together with the LBA of this data to the upper software.

あるいは、ホスト2のフラッシュストレージマネージャは、UWB2Aに格納されているあるデータが不要になったことがフラッシュストレージデバイス3から通知されるまでは、上位ソフトウェアからのこのデータをリードするための要求に応答して、リード要求をフラッシュストレージデバイス3に送出せずに、このデータをUWB2Aから直接リードしてもよい。この場合、データリード処理は以下のように実行される。 Alternatively, the flash storage manager of the host 2 responds to the request from the upper software to read the data stored in the UWB 2A until the flash storage device 3 notifies that the data is no longer needed. Then, without sending a read request to the flash storage device 3, the data may be read directly from the UWB 2A. In this case, data read processing is executed as follows.

(1”) UWB2Aに格納されているあるデータが不要になったことがフラッシュストレージデバイス3から通知されるまでは、ホスト2のフラッシュストレージマネージャは、上位ソフトウェアからのこのデータをリードするための要求に応答して、リード要求をUWB2Aに送出してこのデータをUWB2Aからリードする。このリード要求は、例えば、LBA、長さを含んでいてもよい。 (1") Until the flash storage device 3 notifies that certain data stored in the UWB 2A is no longer needed, the flash storage manager of the host 2 receives a request from the upper software to read this data. in response to send a read request to UWB 2A to read this data from UWB 2A.This read request may include, for example, LBA, length.

(2”) フラッシュストレージマネージャは、UWB2Aからリードされたデータを、このデータのLBAと一緒に上位ソフトウェアに返す。 (2″) The flash storage manager returns the data read from UWB2A to the upper software together with the LBA of this data.

図19のシーケンス図は、フォギー・ファイン書き込みをサポートするフラッシュストレージデバイス3とホスト2とによって実行されるデータ書き込み処理の手順を示す。 The sequence diagram of FIG. 19 shows the procedure of data write processing executed by the flash storage device 3 and the host 2 that support foggy fine write.

ここでは、ライト要求がブロック識別子とバッファアドレス(またはバッファ内オフセット)を含む場合を例示して説明する。 Here, a case where the write request includes a block identifier and a buffer address (or an offset within the buffer) will be described as an example.

ホスト2は、ある書き込み先ブロックに書き込むべきデータ(ライトデータ)をこの書き込み先ブロックに関連づけられたUWB領域に格納し、そしてブロック識別子とバッファアドレス(またはバッファ内オフセット)とを含むライト要求をフラッシュストレージデバイス3に送出する(ステップS71)。ブロック識別子は、このライトデータが書き込まれるべき書き込み先ブロックのブロックアドレスである。バッファアドレスは、このライトデータが格納されているUWB領域内の位置を示す。 The host 2 stores data (write data) to be written to a certain write destination block in the UWB area associated with this write destination block, and flushes a write request including a block identifier and a buffer address (or an offset within the buffer). It is sent to the storage device 3 (step S71). The block identifier is the block address of the write destination block to which this write data is to be written. The buffer address indicates the position within the UWB area where this write data is stored.

フラッシュストレージデバイス3のコントローラ4は、このライト要求をホスト2から受信し、このライト要求内のブロック識別子とバッファアドレス(またはバッファ内オフセット)を保持する(ステップS81)。この場合、コントローラ4は、ブロック識別子とバッファアドレスをDRAM6上のライトバッファ31に格納することによってこれらブロック識別子とバッファアドレスを保持してもよい。 The controller 4 of the flash storage device 3 receives this write request from the host 2 and holds the block identifier and buffer address (or buffer offset) in this write request (step S81). In this case, the controller 4 may retain these block identifiers and buffer addresses by storing them in the write buffer 31 on the DRAM 6 .

保持しているブロック識別子によって指定される書き込み先ブロックにこのライト要求に対応するライトデータを複数段階のプログラム動作(フォギー・ファイン・プログラム動作)で書き込む際、フラッシュストレージデバイス3のコントローラ4は、まず、フォギー書き込みのために使用されるライトデータ(フォギーデータ)をUWB領域から取得するために、保持しているバッファアドレス(またはバッファ内オフセット)を含む転送要求をホスト2に送出する(ステップS82)。 When writing the write data corresponding to this write request to the write destination block specified by the held block identifier by a multi-stage program operation (foggy fine program operation), the controller 4 of the flash storage device 3 first , to acquire write data (foggy data) used for foggy writing from the UWB area, a transfer request including the held buffer address (or buffer offset) is sent to the host 2 (step S82). .

ホスト2がこの転送要求を受信すると、ホスト2は、このライトデータをUWB領域からフラッシュストレージデバイス3に転送する(ステップS72)。 When the host 2 receives this transfer request, the host 2 transfers this write data from the UWB area to the flash storage device 3 (step S72).

フラッシュストレージデバイス3のコントローラ4は、ホスト2から転送されるこのライトデータをフォギーデータとして受信する(ステップS83)。コントローラ4は、受信したライトデータ(フォギーデータ)を例えばDRAM6上のライトバッファ31等に格納することによって保持する(ステップS84)。 The controller 4 of the flash storage device 3 receives this write data transferred from the host 2 as foggy data (step S83). The controller 4 holds the received write data (foggy data) by storing it in, for example, the write buffer 31 on the DRAM 6 (step S84).

コントローラ4は、受信したライトデータ(フォギーデータ)をNAND型フラッシュメモリ5に転送する(ステップS85)。NAND型フラッシュメモリ5へのライトデータ(フォギーデータ)の転送が完了するまで、コントローラ4は、このライトデータ(フォギーデータ)を保持する。そして、コントローラ4は、このライトデータ(フォギーデータ)を、保持しているブロック識別子によって指定される書き込み先ブロックの書き込み先物理ページに書き込む(一段階目の書き込み:フォギー書き込み)(ステップS86)。 The controller 4 transfers the received write data (foggy data) to the NAND flash memory 5 (step S85). The controller 4 holds the write data (foggy data) until the transfer of the write data (foggy data) to the NAND flash memory 5 is completed. Then, the controller 4 writes this write data (foggy data) to the write destination physical page of the write destination block specified by the held block identifier (first stage write: foggy write) (step S86).

この後、この書き込み先物理ページへの二段階目の書き込み(ファイン書き込み)を実行するタイミングが到来すると、フラッシュストレージデバイス3のコントローラ4は、ファイン書き込みのために使用されるライトデータ(ファインデータ)をUWB領域から取得するために、保持しているバッファアドレス(またはバッファ内オフセット)を含む転送要求をホスト2に再び送出する(ステップS87)。ファインデータは、フォギーデータと同じデータである。 After that, when the timing for executing the second stage write (fine write) to this write destination physical page arrives, the controller 4 of the flash storage device 3 writes the write data (fine data) used for the fine write. from the UWB area, a transfer request including the retained buffer address (or offset in the buffer) is sent to the host 2 again (step S87). Fine data is the same data as foggy data.

ホスト2がこの転送要求を受信すると、ホスト2は、このライトデータをUWB領域からフラッシュストレージデバイス3に転送する(ステップS73)。 When the host 2 receives this transfer request, the host 2 transfers this write data from the UWB area to the flash storage device 3 (step S73).

フラッシュストレージデバイス3のコントローラ4は、ホスト2から転送されるこのライトデータをファインデータとして受信する(ステップS88)。コントローラ4は、受信したライトデータ(ファインデータ)を例えばDRAM6上のライトバッファ31等に格納することによって保持する(ステップS89)。 The controller 4 of the flash storage device 3 receives this write data transferred from the host 2 as fine data (step S88). The controller 4 holds the received write data (fine data) by storing it in, for example, the write buffer 31 on the DRAM 6 (step S89).

コントローラ4は、受信したライトデータ(ファインデータ)をNAND型フラッシュメモリ5に転送する(ステップS90)。NAND型フラッシュメモリ5へのライトデータ(ファインデータ)の転送が完了するまで、コントローラ4は、このライトデータ(ファインデータ)を保持する。そして、コントローラ4は、このライトデータ(ファインデータ)を、この書き込み先ブロックのこの書き込み先物理ページに書き込む(二段階目の書き込み:ファイン書き込み)(ステップS91)。 The controller 4 transfers the received write data (fine data) to the NAND flash memory 5 (step S90). The controller 4 holds the write data (fine data) until the transfer of the write data (fine data) to the NAND flash memory 5 is completed. Then, the controller 4 writes this write data (fine data) to this write destination physical page of this write destination block (second stage write: fine write) (step S91).

書き込み動作が終了し且つこのライトデータが読み出し可能になった場合(つまり、フォギー書き込み動作とファイン書き込み動作の双方が終了した場合)、コントローラ4は、UWB領域に格納されているこのライトデータが不要になったことをホスト2に通知する(ステップS92)。 When the write operation is finished and this write data becomes readable (that is, when both the foggy write operation and the fine write operation are finished), the controller 4 does not need this write data stored in the UWB area. The host 2 is notified that it has become (step S92).

図20は、ホスト2(情報処理装置)の構成例を示す。 FIG. 20 shows a configuration example of the host 2 (information processing device).

このホスト2は、プロセッサ(CPU)101、メインメモリ102、BIOS-ROM103、ネットワークコントローラ105、周辺インタフェースコントローラ106、コントローラ107、およびエンベデッドコントローラ(EC)108等を含む。 This host 2 includes a processor (CPU) 101, a main memory 102, a BIOS-ROM 103, a network controller 105, a peripheral interface controller 106, a controller 107, an embedded controller (EC) 108, and the like.

プロセッサ101は、この情報処理装置内の各コンポーネントの動作を制御するように構成されたCPUである。このプロセッサ101は、メインメモリ102上の様々なプログラムを実行する。メインメモリ102は、DRAMのようなランダムアクセスメモリから構成される。プロセッサ101によって実行されるプログラムは、アプリケーションソフトウェアレイヤ41、オペレーティングシステム(OS)42、ファイルシステム43、デバイスドライバ44、等を含む。 A processor 101 is a CPU configured to control the operation of each component in this information processing apparatus. This processor 101 executes various programs on the main memory 102 . The main memory 102 consists of random access memory such as DRAM. Programs executed by processor 101 include an application software layer 41, an operating system (OS) 42, a file system 43, device drivers 44, and the like.

様々なアプリケーションプログラムがアプリケーションソフトウェアレイヤ41上で走る。一般に知られているように、OS42は、この情報処理装置全体を管理し、この情報処理装置内のハードウェアを制御し、ソフトウェアがハードウェアおよびフラッシュストレージデバイス3を使用することを可能にするための制御を実行するように構成されたソフトウェアである。ファイルシステム43は、ファイルの操作(クリエイト、保存、更新、削除等)のための制御を行うために使用される。 Various application programs run on the application software layer 41 . As is generally known, the OS 42 manages the entire information processing apparatus, controls hardware within the information processing apparatus, and enables software to use the hardware and the flash storage device 3. is software configured to perform the control of The file system 43 is used to control file operations (create, save, update, delete, etc.).

デバイスドライバ44は、フラッシュストレージデバイス3を制御および管理するためのプログラムである。このデバイスドライバ44は、上述のフラッシュストレージマネージャを含む。このフラッシュストレージマネージャ45は、メインメモリ102上のUWB2Aを管理するための命令群、フラッシュストレージデバイス3にライト要求、リード要求等を送出するための命令群、フラッシュストレージデバイス3から転送要求を受信する度にUWB2Aからフラッシュストレージデバイス3にデータを転送するための命令群、UWB2Aに格納されているあるデータが不要になったことがフラッシュストレージデバイス3から通知されるまでは、このデータをUWB2Aからリードするための命令群、等を含む。プロセッサ101は、デバイスドライバ44内のフラッシュストレージマネージャ45の命令群を実行することによって、データ書き込み処理、データ読み出し処理、UWB領域解放処理、等を実行する。 A device driver 44 is a program for controlling and managing the flash storage device 3 . This device driver 44 includes the flash storage manager mentioned above. This flash storage manager 45 receives a command group for managing the UWB 2A on the main memory 102, a command group for sending write requests, read requests, etc. to the flash storage device 3, and transfer requests from the flash storage device 3. A group of instructions for transferring data from the UWB 2A to the flash storage device 3 each time, reading this data from the UWB 2A until the flash storage device 3 notifies that the data stored in the UWB 2A is no longer needed. commands to do so, etc. The processor 101 executes data write processing, data read processing, UWB area release processing, and the like by executing the instruction group of the flash storage manager 45 in the device driver 44 .

ネットワークコントローラ105は、ethernetコントローラのような通信デバイスである。周辺インタフェースコントローラ106は、USBデバイスのような周辺デバイスとの通信を実行するように構成されている。 Network controller 105 is a communication device such as an ethernet controller. Peripheral interface controller 106 is configured to perform communications with peripheral devices, such as USB devices.

コントローラ107は、複数のコネクタ107Aにそれぞれ接続されるデバイスとの通信を実行するように構成されている。本実施形態では、複数のフラッシュストレージデバイス3が複数のコネクタ107Aにそれぞれ接続されてもよい。コントローラ107は、SAS expander、PCIe Switch、PCIe expander、フラッシュアレイコントローラ、またはRAIDコントローラでもよい。あるいは、複数のフラッシュストレージデバイス3は、ethernetを介してネットワークコントローラ105に接続されてもよい。 Controller 107 is configured to communicate with devices connected to a plurality of connectors 107A. In this embodiment, multiple flash storage devices 3 may be connected to multiple connectors 107A, respectively. Controller 107 may be a SAS expander, PCIe Switch, PCIe expander, flash array controller, or RAID controller. Alternatively, multiple flash storage devices 3 may be connected to the network controller 105 via ethernet.

図21のフローチャートは、プロセッサ101によって実行されるデータ書き込み処理の手順を示す。 The flowchart in FIG. 21 shows the procedure of data write processing executed by the processor 101 .

データ書き込み処理においては、プロセッサ101は、一つの書き込み先ブロックに書き込むべきライトデータをUWB2A(この書き込み先ブロックに対応するUWB領域)に格納する(ステップS101)。プロセッサ101は、この書き込み先ブロックに関連付けられた識別子と、ライトデータが格納されているUWB2A内の位置(UWB領域無いとの位置)を示す記憶位置情報とを含むライト要求をフラッシュストレージデバイス3に送出する(ステップS102)。書き込み先ブロックに関連付けられた識別子は、上述したように、書き込み先ブロックのブロック識別子(ブロックアドレス)であってもよい。記憶位置情報は、上述したように、バッファアドレス(またはバッファ内オフセット)であってもよい。この場合、プロセッサ101は、タグ、ブロック識別子、バッファアドレス(またはバッファ内オフセット)を含むライト要求をフラッシュストレージデバイス3に送出してもよい。また、ホスト2がブロックのみならず、ページも指定する構成においては、ライト要求は、タグ、ブロック識別子(ブロックアドレス)、ページアドレス、バッファアドレス(またはバッファ内オフセット)を含んでもよい。 In the data write process, the processor 101 stores write data to be written to one write destination block in the UWB 2A (UWB area corresponding to this write destination block) (step S101). The processor 101 sends a write request to the flash storage device 3, which includes an identifier associated with this write destination block and storage position information indicating the position within the UWB 2A where the write data is stored (the position where there is no UWB area). Send out (step S102). The identifier associated with the destination block may be the block identifier (block address) of the destination block, as described above. The storage location information may be the buffer address (or offset within the buffer), as described above. In this case, the processor 101 may send a write request to the flash storage device 3 including the tag, block identifier, and buffer address (or offset within the buffer). Also, in a configuration in which the host 2 specifies not only blocks but also pages, the write request may include tags, block identifiers (block addresses), page addresses, and buffer addresses (or buffer offsets).

あるいは、ストリーム書き込みを使用するケースにおいては、ブロック識別子(ブロックアドレス)の代わりに、ストリームIDが利用されてもよい。この場合、ライト要求は、ストリームID、LBA、バッファアドレス(またはバッファ内オフセット)を含んでもよい。 Alternatively, in the case of using stream writing, stream IDs may be used instead of block identifiers (block addresses). In this case, the write request may include the stream ID, LBA, buffer address (or offset within the buffer).

プロセッサ101がライト要求をフラッシュストレージデバイス3に送出した後、プロセッサ101は、バッファアドレス(またはバッファ内オフセット)を含む転送要求をフラッシュストレージデバイス3から受信する度に、上述のライトデータをUWB2A(UWB領域)からフラッシュストレージデバイス3に転送する(ステップS103、S104)。より詳しくは、プロセッサ101は、バッファアドレス(またはバッファ内オフセット)を含む転送要求がフラッシュストレージデバイス3から受信されたか否かを判定する(ステップS103)。そして、この転送要求がフラッシュストレージデバイス3から受信されたならば(ステップS103のYES)、プロセッサ101は、上述のライトデータをUWB2A(UWB領域)からフラッシュストレージデバイス3に転送する。 After the processor 101 has sent a write request to the flash storage device 3, every time the processor 101 receives a transfer request including a buffer address (or an offset within the buffer) from the flash storage device 3, the above write data is converted to UWB2A (UWB area) to the flash storage device 3 (steps S103 and S104). More specifically, the processor 101 determines whether a transfer request including a buffer address (or an offset within the buffer) has been received from the flash storage device 3 (step S103). Then, if this transfer request is received from the flash storage device 3 (YES in step S103), the processor 101 transfers the above write data from the UWB 2A (UWB area) to the flash storage device 3.

上述したように、複数段階のプログラム動作(フォギー・ファイン・プログラム動作)でライトデータが書き込み先ブロックに書き込まれるケースにおいては、プロセッサ101は、同じバッファアドレス(または同じバッファ内オフセット)を含む転送要求をフラッシュストレージデバイス3から複数回受信する。そして、この転送要求を受信する度に、プロセッサ101は、上述のライトデータをUWB2A(UWB領域)からフラッシュストレージデバイス3に転送する。 As described above, in a case where write data is written to a write destination block in a multi-step program operation (foggy fine program operation), the processor 101 outputs a transfer request including the same buffer address (or the same buffer offset). is received from the flash storage device 3 multiple times. Then, each time this transfer request is received, the processor 101 transfers the write data described above from the UWB 2A (UWB area) to the flash storage device 3 .

図22のフローチャートは、プロセッサ101によって実行されるデータ読み出し処理の手順を示す。 The flowchart of FIG. 22 shows the procedure of data reading processing executed by the processor 101 .

UWB2A(UWB領域)に格納されているデータが不要になったことがフラッシュストレージデバイス3から通知されるまでは、プロセッサ101は、上位ソフトウェアからのこのデータをリードするための要求に応答してこのデータをUWB2A(UWB領域)からリードし、このリードしたデータを上位ソフトウェアに返す。 Until the flash storage device 3 notifies that the data stored in the UWB 2A (UWB area) is no longer needed, the processor 101 reads this data in response to a request from upper software. Data is read from UWB2A (UWB area), and the read data is returned to the upper software.

すなわち、上位ソフトウェアからデータのリードが要求されたならば(ステップS111のYES)、プロセッサ101は、UWB2A(UWB領域)上のこのデータが不要になったことがフラッシュストレージデバイス3から既に通知されているか否かを判定する(ステップS112)。 That is, if a data read request has been issued by upper software (YES in step S111), the processor 101 has already been notified by the flash storage device 3 that this data on the UWB 2A (UWB area) is no longer needed. It is determined whether or not there is (step S112).

このデータが不要になったことがまだ通知されていないならば(ステップS112のNO)、プロセッサ101は、このデータをUWB2A(UWB領域)からリードし、リードしたデータを上位ソフトウェアに返す(ステップS112)。 If it has not been notified that this data is no longer necessary (NO in step S112), the processor 101 reads this data from the UWB2A (UWB area) and returns the read data to the upper software (step S112). ).

一方、このデータが不要になったことが既に通知されているならば(ステップS112のYES)、プロセッサ101は、このデータをリードするためのリード要求をフラッシュストレージデバイス3に送出し、これによってこのデータをフラッシュストレージデバイス3からリードする(ステップS114)。 On the other hand, if it has already been notified that this data is no longer needed (YES in step S112), the processor 101 sends a read request for reading this data to the flash storage device 3, thereby Data is read from the flash storage device 3 (step S114).

図23のフローチャートは、プロセッサ101によって実行されるデータ読み出し処理の別の手順を示す。 The flowchart of FIG. 23 shows another procedure of data reading processing executed by the processor 101 .

上位ソフトウェアからデータをリードするための要求が受信されたならば(ステップS121のYES)、プロセッサ101は、このデータがUWB2A(UWB領域)に存在するか否かにかかわらず、つまりこのデータが不要になったことが既にフラッシュストレージデバイス3から通知されているか否かにかかわらず、このデータをリードするためのリード要求をフラッシュストレージデバイス3に送出する(ステップS122)。 If a request to read data is received from upper software (YES in step S121), processor 101 determines whether this data exists in UWB2A (UWB area), that is, whether or not this data is unnecessary. A read request for reading this data is sent to the flash storage device 3 regardless of whether or not it has already been notified from the flash storage device 3 that it has become (step S122).

フラッシュストレージデバイス3は、このリード要求によって指定されたデータがまだ読み出し可能になっていないならば、このデータをUWB2A(UWB領域)から返すように要求する転送要求をホスト2に送出する。 If the data specified by this read request has not yet become readable, the flash storage device 3 sends a transfer request to the host 2 requesting that this data be returned from the UWB 2A (UWB area).

この転送要求がフラッシュストレージデバイス3から受信されたならば(ステップS123のYES)、プロセッサ101は、このデータをUWB2A(UWB領域)からリードし、このリードしたデータを上位ソフトウェアに返す(ステップS124)。 If this transfer request is received from the flash storage device 3 (YES in step S123), the processor 101 reads this data from the UWB 2A (UWB area) and returns this read data to the upper software (step S124). .

この転送要求がフラッシュストレージデバイス3から受信されなかったならば(ステップS123のNO)、プロセッサ101は、リード要求に対する応答としてフラッシュストレージデバイス3から返されるデータを受信し、このデータを上位ソフトウェアに返す(ステップS125)。 If this transfer request has not been received from the flash storage device 3 (NO in step S123), the processor 101 receives data returned from the flash storage device 3 as a response to the read request, and returns this data to the upper software. (Step S125).

図24のフローチャートは、プロセッサ101によって実行されるUWB領域解放処理の手順を示す。 The flowchart of FIG. 24 shows the procedure of UWB area release processing executed by the processor 101 .

一つの書き込み先ブロックに関連付けられたUWB領域全体が不要になったことを示す通知(クローズ要求)をプロセッサ101がフラッシュストレージデバイス3から受信した場合(ステップS131のYES)、プロセッサ101は、このUWB領域全体を解放する(ステップS132)。ステップS132では、プロセッサ101は、この解放したUWB領域に対応するメモリスペースを他の任意の用途に使用することができる。例えば、プロセッサは、フラッシュストレージデバイス3のコントローラ4によって新たに割り当てられた書き込み先ブロックに関連付けられたUWB領域としてこの解放したUWB領域を再利用してもよい。この新たに割り当てられた書き込み先ブロックにデータを書き込むことが必要な時、プロセッサ101は、まず、この新たに割り当てられた書き込み先ブロックに関連付けられたUWB領域にこのデータを格納し、そして、この新たに割り当てられた書き込み先ブロックに関連付けられた識別子(ブロック識別子、またはストリームID)と、このデータが格納されているこのUWB領域内の位置を示す記憶位置情報(例えばバッファアドレス)とを含むライト要求をフラッシュストレージデバイス3に送出する。 When the processor 101 receives from the flash storage device 3 a notification (close request) indicating that the entire UWB area associated with one write destination block is no longer needed (YES in step S131), the processor 101 closes this UWB area. The entire area is released (step S132). At step S132, the processor 101 can use the memory space corresponding to this released UWB area for any other purpose. For example, the processor may reuse this released UWB area as a UWB area associated with a newly allocated write destination block by the controller 4 of the flash storage device 3 . When it is necessary to write data to this newly allocated write destination block, processor 101 first stores this data in the UWB area associated with this newly allocated write destination block, and then A write that includes an identifier (block identifier, or stream ID) associated with a newly allocated write destination block and storage location information (e.g., buffer address) indicating the location within this UWB area where this data is stored. Send the request to the flash storage device 3 .

以上説明したように、本実施形態によれば、フラッシュストレージデバイス3のコントローラ4は、一つの書き込み先ブロックに関連付けられた第1の識別子(ブロック識別子、またはストリームID)と、書き込むべき第1のデータが格納されているホスト2のメモリ上のライトバッファ(UWB2A)内の位置を示す記憶位置情報(バッファアドレス、またはバッファ内アドレス)とを含むライト要求をホスト2から受信する。そして、第1のデータをNAND型フラッシュメモリ5に書き込む際に、コントローラ4は、記憶位置情報を含む転送要求をホスト2に送出することによって第1のデータをライトバッファ(UWB2A)から取得する。したがって、書き込み動作のために必要なデータをホスト2のライトバッファ(UWB2A)から取得できるので、フラッシュストレージデバイス3に多数のライトバッファを用意することなく、同時に利用可能な書き込み先ブロックの数を増やすことができる。よって、フラッシュストレージデバイス3のコストアップを招くことなく、フラッシュストレージデバイス3を共有するエンドユーザの数を容易に増やすことが可能となる。 As described above, according to the present embodiment, the controller 4 of the flash storage device 3 uses the first identifier (block identifier or stream ID) associated with one write destination block and the first identifier to be written. A write request including storage location information (buffer address or intra-buffer address) indicating the location in the write buffer (UWB2A) on the memory of the host 2 where data is stored is received from the host 2 . When writing the first data to the NAND flash memory 5, the controller 4 acquires the first data from the write buffer (UWB2A) by sending a transfer request including storage location information to the host 2. FIG. Therefore, since the data necessary for the write operation can be obtained from the write buffer (UWB2A) of the host 2, the number of write destination blocks that can be used at the same time can be increased without preparing a large number of write buffers in the flash storage device 3. be able to. Therefore, it is possible to easily increase the number of end users sharing the flash storage device 3 without increasing the cost of the flash storage device 3 .

また、コントローラ4は、第1のデータの書き込みが終了し且つ第1のデータがNAND型フラッシュメモリ5から読み出し可能になった場合、ライトバッファ(UWB2A)に保持されている第1のデータが不要になったことをホスト2に通知する。この通知に応じて、ホスト2は、必要に応じてこのデータを破棄することができる。したがって、書き込むべきデータがNAND型フラッシュメモリ5から読み出し可能になるまでは、コントローラ4は、必要に応じて、このデータをライトバッファ(UWB2A)から繰り返し取得することもできる。したがって、フォギー・ファイン・プログラム動作のような複数段階のプログラム動作を実行する場合であっても、コントローラ4は、各段階のプログラム動作の開始の度に、必要なデータをライトバッファ(UWB2A)から取得することができる。 Further, when the writing of the first data is finished and the first data can be read from the NAND flash memory 5, the controller 4 does not need the first data held in the write buffer (UWB2A). notifies the host 2 that the In response to this notification, the host 2 can discard this data if necessary. Therefore, until the data to be written becomes readable from the NAND flash memory 5, the controller 4 can repeatedly acquire this data from the write buffer (UWB2A) as necessary. Therefore, even when executing a multi-stage program operation such as the foggy fine program operation, the controller 4 transfers necessary data from the write buffer (UWB2A) each time a program operation of each stage is started. can be obtained.

なお、本実施形態では、不揮発性メモリとしてNAND型フラッシュメモリを例示した。しかし、本実施形態の機能は、例えば、MRAM(Magnetoresistive
Random Access Memory)、PRAM(Phase change
Random Access Memory)、ReRAM(Resistive Random Access Memory)、又は、FeRAM(Ferroelectric Random Access Memory)のような他の様々な不揮発性メモリにも適用できる。
In addition, in this embodiment, a NAND flash memory is exemplified as the nonvolatile memory. However, the function of this embodiment is, for example, MRAM (Magnetoresistive
Random Access Memory), PRAM (Phase change
Random Access Memory), ReRAM (Resistive Random Access Memory), or FeRAM (Ferroelectric Random Access Memory).

本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。 While several embodiments of the invention have been described, these embodiments have been presented by way of example and are not intended to limit the scope of the invention. These novel embodiments can be implemented in various other forms, and various omissions, replacements, and modifications can be made without departing from the scope of the invention. These embodiments and modifications thereof are included in the scope and gist of the invention, and are included in the scope of the invention described in the claims and equivalents thereof.

2…ホスト、2A…ライトバッファ、3…フラッシュストレージデバイス、4…コントローラ、5…NAND型フラッシュメモリ、21…ブロック識別子/バッファアドレス受信部、22…転送要求送信部、23…通知部。 2 Host 2A Write buffer 3 Flash storage device 4 Controller 5 NAND flash memory 21 Block identifier/buffer address receiver 22 Transfer request transmitter 23 Notifier.

Claims (16)

ホストに接続可能なメモリシステムであって、
複数のブロックを含む不揮発性メモリと、
前記不揮発性メモリに電気的に接続され、前記不揮発性メモリを制御するように構成されたコントローラとを具備し、
前記コントローラは、
書き込むべき第1のデータが格納されている前記ホストのメモリ上のライトバッファ内の位置を示す記憶位置情報を含むライト要求を前記ホストから受信し、
前記第1のデータを、複数段階のプログラム動作によって前記不揮発性メモリに書き込む際に、
前記複数段階のプログラム動作の各プログラム動作の度に、
前記記憶位置情報を含む転送要求を前記ホストに送信することによって前記第1のデータを前記ライトバッファから取得し、
前記第1のデータを前記不揮発性メモリに転送し、
前記第1のデータを前記複数のブロックのうちの一つの書き込み先ブロックに書き込む、ように構成されるメモリシステム。
A memory system connectable to a host,
a non-volatile memory including a plurality of blocks;
a controller electrically connected to the non-volatile memory and configured to control the non-volatile memory;
The controller is
receiving from the host a write request including storage location information indicating a location within a write buffer in the memory of the host where first data to be written is stored;
When writing the first data to the nonvolatile memory by a multi-stage program operation,
At each program operation of the multi-stage program operation,
obtaining the first data from the write buffer by transmitting a transfer request including the storage location information to the host;
transferring the first data to the non-volatile memory;
A memory system configured to write the first data to a destination block of one of the plurality of blocks.
前記コントローラは、前記第1のデータの書き込み開始から前記第1のデータが読み出し可能になるまでの期間中に前記第1のデータをリードするためのリード要求を前記ホストから受信した場合、前記ライトバッファから前記第1のデータを取得するように要求する取得要求を、前記ホストに送信するように構成されている請求項1記載のメモリシステム。 When the controller receives a read request for reading the first data from the host during a period from the start of writing the first data until the first data becomes readable, the write 2. The memory system of claim 1, wherein the memory system is configured to send a retrieval request to the host to retrieve the first data from a buffer. 前記ライトバッファは前記複数のブロックに対応する複数のライトバッファ領域を含み、
前記コントローラは、前記一つの書き込み先ブロックの全体がデータで満たされた場合、前記一つの書き込み先ブロックに対応する前記ライトバッファ内のライトバッファ領域が不要になったことを前記ホストに通知するように構成されている請求項1記載のメモリシステム。
the write buffer includes a plurality of write buffer areas corresponding to the plurality of blocks;
The controller notifies the host that a write buffer area in the write buffer corresponding to the one write destination block is no longer needed when the one write destination block is entirely filled with data. 2. The memory system of claim 1, wherein the memory system is configured as:
前記メモリシステムは前記ホストにEthernet(登録商標)を介して接続される請求項1記載のメモリシステム。 2. The memory system according to claim 1, wherein said memory system is connected to said host via Ethernet (registered trademark). 前記ライト要求は、書き込み先ブロックを指定するブロック識別子を含む請求項1記載のメモリシステム。 2. The memory system according to claim 1, wherein said write request includes a block identifier designating a write destination block. 前記複数のブロックは複数のストリームにそれぞれ関連付けられており、
前記ライト要求は、前記複数のストリーム内の一つのストリームの識別子を含む請求項1記載のメモリシステム。
the plurality of blocks are each associated with a plurality of streams;
2. The memory system according to claim 1, wherein said write request includes an identifier of one of said plurality of streams.
前記ライトバッファは前記複数のブロックに対応する複数のライトバッファ領域を含み、
前記転送要求は前記一つの書き込み先ブロックの識別子と前記記憶位置情報とを含む請求項1記載のメモリシステム。
the write buffer includes a plurality of write buffer areas corresponding to the plurality of blocks;
2. The memory system according to claim 1, wherein said transfer request includes an identifier of said one write destination block and said storage location information.
前記コントローラは、前記複数段階のプログラム動作が終了し且つ前記第1のデータが前記不揮発性メモリから読み出し可能になった場合、前記ライトバッファに格納されている前記第1のデータが不要になったことを前記ホストに通知するように構成される請求項1記載のメモリシステム。 The controller no longer needs the first data stored in the write buffer when the multi-stage program operation is finished and the first data can be read from the nonvolatile memory. 2. The memory system of claim 1, configured to notify the host that 複数のブロックを含む不揮発性メモリを制御する制御方法であって、
書き込むべき第1のデータが格納されているホストのメモリ上のライトバッファ内の位置を示す記憶位置情報を含むライト要求を前記ホストから受信することと、
前記第1のデータを、複数段階のプログラム動作によって前記不揮発性メモリに書き込む際に、
前記複数段階のプログラム動作の各プログラム動作の度に、
前記記憶位置情報を含む転送要求を前記ホストに送信することによって前記第1のデータを前記ライトバッファから取得し、
前記第1のデータを前記不揮発性メモリに転送し、
前記第1のデータを前記複数のブロックのうちの一つの書き込み先ブロックに書き込むこととを具備する制御方法。
A control method for controlling a non-volatile memory including a plurality of blocks, comprising:
receiving a write request from the host that includes storage location information indicating a location in a write buffer in the host's memory where the first data to be written is stored;
When writing the first data to the nonvolatile memory by a multi-stage program operation,
At each program operation of the multi-stage program operation,
obtaining the first data from the write buffer by transmitting a transfer request including the storage location information to the host;
transferring the first data to the non-volatile memory;
and writing the first data to a destination block of the plurality of blocks.
前記第1のデータの書き込み開始から前記第1のデータが読み出し可能になるまでの期間中に前記第1のデータをリードするためのリード要求を前記ホストから受信した場合、前記ライトバッファから前記第1のデータを取得するように要求する取得要求を、前記ホストに送信することをさらに具備する請求項9記載の制御方法。 When a read request for reading the first data is received from the host during a period from the start of writing the first data until the first data becomes readable, the write buffer outputs the first data. 10. The control method according to claim 9, further comprising sending an acquisition request requesting acquisition of one data to the host. 前記ライトバッファは前記複数のブロックに対応する複数のライトバッファ領域を含み、
前記一つの書き込み先ブロックの全体がデータで満たされた場合、前記一つの書き込み先ブロックに対応する前記ライトバッファ内のライトバッファ領域が不要になったことを前記ホストに通知することをさらに具備する請求項9記載の制御方法。
the write buffer includes a plurality of write buffer areas corresponding to the plurality of blocks;
Further comprising notifying the host that the write buffer area in the write buffer corresponding to the one write destination block is no longer needed when the entire one write destination block is filled with data. The control method according to claim 9.
前記ライト要求をEthernet(登録商標)を介して前記ホストから受信する請求項9記載の制御方法。 10. The control method according to claim 9, wherein said write request is received from said host via Ethernet (registered trademark). 前記ライト要求は、書き込み先ブロックを指定するブロック識別子を含む請求項9記載の制御方法。 10. The control method according to claim 9, wherein said write request includes a block identifier specifying a write destination block. 前記複数のブロックは複数のストリームにそれぞれ関連付けられており、
前記ライト要求は、前記複数のストリーム内の一つのストリームの識別子を含む請求項9記載の制御方法。
the plurality of blocks are each associated with a plurality of streams;
10. The control method according to claim 9, wherein said write request includes an identifier of one of said plurality of streams.
前記ライトバッファは前記複数のブロックに対応する複数のライトバッファ領域を含み、
前記転送要求は前記一つの書き込み先ブロックの識別子と前記記憶位置情報とを含む請求項9記載の制御方法。
the write buffer includes a plurality of write buffer areas corresponding to the plurality of blocks;
10. The control method according to claim 9, wherein said transfer request includes an identifier of said one write destination block and said storage location information.
前記複数段階のプログラム動作が終了し且つ前記第1のデータが前記不揮発性メモリから読み出し可能になった場合、前記ライトバッファに格納されている前記第1のデータが不要になったことを前記ホストに通知することをさらに具備する請求項9記載の制御方法。 When the multi-stage program operation is finished and the first data can be read from the nonvolatile memory, the host notifies that the first data stored in the write buffer is no longer needed. 10. The control method of claim 9, further comprising notifying the .
JP2021172380A 2017-12-08 2021-10-21 Memory system and control method Active JP7167291B2 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2021172380A JP7167291B2 (en) 2017-12-08 2021-10-21 Memory system and control method
JP2022166280A JP7400053B2 (en) 2017-12-08 2022-10-17 Memory system and control method

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2017236269A JP6967959B2 (en) 2017-12-08 2017-12-08 Memory system and control method
JP2021172380A JP7167291B2 (en) 2017-12-08 2021-10-21 Memory system and control method

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2017236269A Division JP6967959B2 (en) 2017-12-08 2017-12-08 Memory system and control method

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2022166280A Division JP7400053B2 (en) 2017-12-08 2022-10-17 Memory system and control method

Publications (2)

Publication Number Publication Date
JP2022009357A JP2022009357A (en) 2022-01-14
JP7167291B2 true JP7167291B2 (en) 2022-11-08

Family

ID=87654645

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2021172380A Active JP7167291B2 (en) 2017-12-08 2021-10-21 Memory system and control method
JP2022166280A Active JP7400053B2 (en) 2017-12-08 2022-10-17 Memory system and control method

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2022166280A Active JP7400053B2 (en) 2017-12-08 2022-10-17 Memory system and control method

Country Status (1)

Country Link
JP (2) JP7167291B2 (en)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012128660A (en) 2010-12-15 2012-07-05 Toshiba Corp Semiconductor memory device
JP2013109419A (en) 2011-11-17 2013-06-06 Toshiba Corp Information processor
US20160321010A1 (en) 2015-04-28 2016-11-03 Kabushiki Kaisha Toshiba Storage system having a host directly manage physical data locations of storage device
JP2017054465A (en) 2015-09-11 2017-03-16 株式会社東芝 Memory system and host device
US20170123721A1 (en) 2015-10-28 2017-05-04 Sandisk Technologies Inc. System and method for utilization of a data buffer by command completion in parts
JP2017162068A (en) 2016-03-08 2017-09-14 東芝メモリ株式会社 Storage system, information processing system, and control method

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5547154B2 (en) 2011-09-21 2014-07-09 株式会社東芝 Memory device

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012128660A (en) 2010-12-15 2012-07-05 Toshiba Corp Semiconductor memory device
JP2013109419A (en) 2011-11-17 2013-06-06 Toshiba Corp Information processor
US20160321010A1 (en) 2015-04-28 2016-11-03 Kabushiki Kaisha Toshiba Storage system having a host directly manage physical data locations of storage device
JP2017054465A (en) 2015-09-11 2017-03-16 株式会社東芝 Memory system and host device
US20170123721A1 (en) 2015-10-28 2017-05-04 Sandisk Technologies Inc. System and method for utilization of a data buffer by command completion in parts
JP2017162068A (en) 2016-03-08 2017-09-14 東芝メモリ株式会社 Storage system, information processing system, and control method

Also Published As

Publication number Publication date
JP2022179797A (en) 2022-12-02
JP2022009357A (en) 2022-01-14
JP7400053B2 (en) 2023-12-18

Similar Documents

Publication Publication Date Title
JP6967959B2 (en) Memory system and control method
JP7048289B2 (en) Information processing equipment and methods
JP7159069B2 (en) Memory system and control method
JP7051546B2 (en) Memory system and control method
JP7358594B2 (en) memory system
US11237756B2 (en) System and method of writing to nonvolatile memory using write buffers
JP2021033849A (en) Memory system and control method
JP7381678B2 (en) memory system
JP2021033848A (en) Memory system and control method
JP2021033847A (en) Memory system and control method
JP2023010765A (en) memory system
JP2021033845A (en) Memory system and control method
JP7167291B2 (en) Memory system and control method

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20211021

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220729

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220823

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220914

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221026

R151 Written notification of patent or utility model registration

Ref document number: 7167291

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151