[go: up one dir, main page]

JP7567009B2 - MEMORY SYSTEM AND CONTROL METHOD - Patent application - Google Patents

MEMORY SYSTEM AND CONTROL METHOD - Patent application Download PDF

Info

Publication number
JP7567009B2
JP7567009B2 JP2023171318A JP2023171318A JP7567009B2 JP 7567009 B2 JP7567009 B2 JP 7567009B2 JP 2023171318 A JP2023171318 A JP 2023171318A JP 2023171318 A JP2023171318 A JP 2023171318A JP 7567009 B2 JP7567009 B2 JP 7567009B2
Authority
JP
Japan
Prior art keywords
block
host
data
command
offset
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
JP2023171318A
Other languages
Japanese (ja)
Other versions
JP2023166013A (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 JP2021187155A external-priority patent/JP7167295B2/en
Application filed by Kioxia Corp filed Critical Kioxia Corp
Priority to JP2023171318A priority Critical patent/JP7567009B2/en
Publication of JP2023166013A publication Critical patent/JP2023166013A/en
Application granted granted Critical
Publication of JP7567009B2 publication Critical patent/JP7567009B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System (AREA)

Description

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

近年、不揮発性メモリを備えるメモリシステムが広く普及している。 In recent years, memory systems equipped with non-volatile memory have become widespread.

このようなメモリシステムの一つとして、NANDフラッシュ技術ベースのソリッドステートドライブ(SSD)が知られている。 One such memory system is a solid-state drive (SSD) based on NAND flash technology.

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

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], [Retrieved September 13, 2017], Internet <URL: https://www.usenix.org/system/files/conference/fast12/zhang.pdf >

しかし、一般に、NAND型フラッシュメモリの制御は複雑であるため、I/O性能を改善するための新たなインタフェースの実現に際しては、ホストとストレージ(メモリシステム)との間の適切な役割分担を考慮することが必要とされる。 However, since the control of NAND flash memory is generally complex, when implementing a new interface to improve I/O performance, it is necessary to consider an appropriate division of roles between the host and the storage (memory system).

本発明が解決しようとする課題は、I/O性能の改善を図ることができるメモリシステムおよび制御方法を提供することである。 The problem that this invention aims to solve is to provide a memory system and control method that can improve I/O performance.

実施形態によれば、ホストに接続可能なメモリシステムは、各々が消去動作の単位であり、各々がブロック番号により指定される複数のブロックを含む不揮発性メモリと、前記不揮発性メモリに電気的に接続され、前記不揮発性メモリを制御するコントローラとを具備する。前記コントローラは、第1のブロック番号を少なくとも指定するコピーコマンドを前記ホストから受信したことに応じて、前記複数のブロックのうちの前記第1のブロック番号により指定される第1のブロックから第1のデータを読み出し、前記複数のブロックのうちの前記第1のブロックとは異なる第2のブロック内の第1の位置に前記第1のデータを書き込み、前記第1のデータを識別するための第1の識別子と、前記第2のブロックを指定する第2のブロック番号と、前記第2のブロック内の前記第1の位置を示す第1のブロック内物理アドレスと、を前記ホストに通知する。 According to an embodiment, a memory system connectable to a host includes a non-volatile memory including a plurality of blocks, each of which is a unit of an erase operation and each of which is specified by a block number, and a controller electrically connected to the non-volatile memory and controlling the non-volatile memory. In response to receiving a copy command from the host specifying at least a first block number, the controller reads first data from a first block specified by the first block number among the plurality of blocks, writes the first data to a first position in a second block different from the first block among the plurality of blocks, and notifies the host of a first identifier for identifying the first data, a second block number specifying the second block, and a physical address within the first block indicating the first position within the second block.

ホストと実施形態のメモリシステム(フラッシュストレージデバイス)との関係を示すブロック図。FIG. 2 is a block diagram showing the relationship between a host and a memory system (flash storage device) according to an embodiment. 従来型SSDとホストとの間の役割分担と、同実施形態のフラッシュストレージデバイスとホストとの間の役割分担とを説明するための図。1A and 1B are diagrams for explaining the division of roles between a conventional SSD and a host, and the division of roles between a flash storage device and a host in the embodiment. 複数のホストと複数のフラッシュストレージデバイスとの間のデータ転送がネットワーク機器を介して実行される計算機システムの構成例を示すブロック図。FIG. 1 is a block diagram showing an example of the configuration of a computer system in which data transfer between multiple hosts and multiple flash storage devices is performed via a network device. 同実施形態のメモリシステムの構成例を示すブロック図。FIG. 2 is a block diagram showing an example of the configuration of a memory system according to the embodiment. 同実施形態のメモリシステムに設けられたNANDインタフェースと複数のNAND型フラッシュメモリダイとの関係を示すブロック図。FIG. 2 is a block diagram showing the relationship between a NAND interface and multiple NAND flash memory dies provided in the memory system of the embodiment. 複数のブロックの集合によって構築されるスーパーブロックの構成例を示す図。FIG. 13 is a diagram showing an example of the configuration of a superblock constructed by a set of multiple blocks. ホストが論理アドレスとブロック番号とを指定し且つ同実施形態のメモリシステムがブロック内物理アドレス(ブロック内オフセット)を決定するデータ書き込み動作と、ホストがブロック番号とブロック内物理アドレス(ブロック内オフセット)とを指定するデータ読み出し動作とを説明するための図。A diagram for explaining a data write operation in which the host specifies a logical address and a block number and the memory system of the embodiment determines a physical address within the block (offset within the block), and a data read operation in which the host specifies a block number and a physical address within the block (offset within the block). 同実施形態のメモリシステムに適用されるライトコマンドを説明するための図。4 is a diagram for explaining a write command applied to the memory system of the embodiment. 図8のライトコマンドに対するレスポンスを説明するための図。9 is a diagram for explaining a response to the write command in FIG. 8 . 同実施形態のメモリシステムに適用されるTrimコマンドを説明するための図。4 is a diagram for explaining a Trim command applied to the memory system of the embodiment. 物理アドレスを表す、ブロック番号およびオフセットを説明するための図。FIG. 2 is a diagram for explaining a block number and an offset that represent a physical address. ライトコマンドに応じて実行される書き込み動作を説明するための図。FIG. 4 is a diagram for explaining a write operation executed in response to a write command. 不良ページをスキップする書き込み動作を説明するための図。11A and 11B are diagrams for explaining a write operation that skips a defective page. 不良ページをスキップする書き込み動作の別の例を説明するための図。11A and 11B are diagrams for explaining another example of a write operation that skips a bad page. 論理アドレスとデータのペアをブロック内のページに書き込む動作を説明するための図。1A and 1B are diagrams for explaining an operation of writing a pair of a logical address and data to a page in a block. データをブロック内のページのユーザデータ領域に書き込み、このデータの論理アドレスをこのページの冗長領域に書き込む動作を説明するための図。13 is a diagram for explaining an operation of writing data to a user data area of a page in a block and writing the logical address of this data to a redundant area of this page. スーパーブロックが使用される場合におけるブロック番号とオフセットとの関係を説明するための図。FIG. 13 is a diagram for explaining the relationship between block numbers and offsets when a superblock is used. 同実施形態のメモリシステムに適用される最大ブロック番号ゲットコマンドを説明するための図。11 is a diagram for explaining a maximum block number get command applied to the memory system of the embodiment. 最大ブロック番号ゲットコマンドに対するレスポンスを説明するための図。FIG. 13 is a diagram for explaining a response to a maximum block number get command. 同実施形態のメモリシステムに適用されるブロックサイズゲットコマンドを説明するための図。4 is a diagram for explaining a block size get command applied to the memory system of the embodiment. ブロックサイズゲットコマンドに対するレスポンスを説明するための図。FIG. 13 is a diagram for explaining a response to a block size get command. 同実施形態のメモリシステムに適用されるブロックアロケートコマンド(ブロック割り当て要求)を説明するための図。4 is a diagram for explaining a block allocate command (block allocation request) applied to the memory system of the embodiment. ブロックアロケートコマンドに対するレスポンスを説明するための図。FIG. 13 is a diagram for explaining a response to a block allocate command. ホストと同実施形態のメモリシステムとによって実行されるブロック情報取得処理を示すシーケンスチャート。11 is a sequence chart showing a block information acquisition process executed by the host and the memory system of the embodiment. ホストと同実施形態のメモリシステムとによって実行される書き込み処理のシーケンスを示すシーケンスチャート。11 is a sequence chart showing a sequence of a write process executed by a host and the memory system of the embodiment. すでに書き込まれているデータに対する更新データを書き込むデータ更新動作を示す図。11A and 11B are diagrams showing a data update operation for writing update data for data that has already been written; 同実施形態のメモリシステムによって管理されるブロック管理テーブルを更新する動作を説明するための図。4 is a diagram for explaining an operation of updating a block management table managed by the memory system of the embodiment. ホストによって管理されるルックアップテーブル(論理物理アドレス変換テーブル)を更新する動作を説明するための図。11 is a diagram for explaining an operation of updating a lookup table (logical-physical address conversion table) managed by a host. 無効化すべきデータに対応するブロック番号および物理アドレスを示すホストからの通知に応じてブロック管理テーブルを更新する動作を説明するための図。11 is a diagram for explaining an operation of updating the block management table in response to a notification from a host indicating a block number and a physical address corresponding to data to be invalidated. 同実施形態のメモリシステムに適用されるリードコマンドを説明するための図。4 is a diagram for explaining a read command applied to the memory system of the embodiment. 同実施形態のメモリシステムによって実行されるリード動作を説明するための図。4 is a diagram for explaining a read operation executed by the memory system of the embodiment. ホストからのリードコマンドに応じて、異なる物理記憶位置にそれぞれ格納されているデータ部をリードする動作を説明するための図。1A and 1B are diagrams for explaining an operation of reading data portions stored in different physical storage locations in response to a read command from a host. ホストと同実施形態のメモリシステムとによって実行されるリード処理のシーケンスを示すシーケンスチャート。11 is a sequence chart showing a sequence of a read process executed by a host and the memory system of the embodiment. 同実施形態のメモリシステムに適用されるガベージコレクション(GC)制御コマンドを説明するための図。3A and 3B are diagrams for explaining garbage collection (GC) control commands applied to the memory system of the embodiment. 同実施形態のメモリシステムに適用されるGC用コールバックコマンドを説明するための図。4 is a diagram for explaining a GC callback command applied to the memory system of the embodiment. ホストと同実施形態のメモリシステムとによって実行されるガベージコレクション(GC)動作の手順を示すシーケンスチャート。1 is a sequence chart showing the procedure of a garbage collection (GC) operation executed by the host and the memory system of the embodiment. ガベージコレクション(GC)のために実行されるデータコピー動作の例を説明するための図。1A and 1B are diagrams for explaining an example of a data copy operation executed for garbage collection (GC); 図37のデータコピー動作の結果に基づいて更新されるホストのルックアップテーブルの内容を説明するための図。38 is a diagram for explaining the contents of the host's lookup table that is updated based on the result of the data copy operation of FIG. 37 .

以下、図面を参照して、実施形態を説明する。 The following describes the embodiment with reference to the drawings.

まず、図1を参照して、一実施形態に係るメモリシステムを含む計算機システムの構成を説明する。 First, referring to FIG. 1, the configuration of a computer system including a memory system according to one embodiment will be described.

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

この計算機システムは、ホスト(ホストデバイス)2と、複数のフラッシュストレージデバイス3とを含んでいてもよい。ホスト2は、複数のフラッシュストレージデバイス3によって構成されるフラッシュアレイをストレージとして使用するように構成されたサーバであってもよい。ホスト(サーバ)2と複数のフラッシュストレージデバイス3は、インタフェース50を介して相互接続される(内部相互接続)。この内部相互接続のためのインタフェース50としては、これに限定されないが、PCI Express(PCIe)(登録商標)、NVM Express(NVMe)(登録商標)、Ethernet(登録商標)、NVMe over Fabrics(NVMeOF)等を使用し得る。 This computer system may include a host (host device) 2 and multiple flash storage devices 3. The host 2 may be a server configured to use a flash array composed of multiple flash storage devices 3 as storage. The host (server) 2 and multiple flash storage devices 3 are interconnected via an interface 50 (internal interconnection). The interface 50 for this internal 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.

ホスト2として機能するサーバの典型例としては、データセンター内のサーバが挙げられる。 A typical example of a server that functions as a host 2 is a server in a data center.

ホスト2がデータセンター内のサーバによって実現されるケースにおいては、このホスト(サーバ)2は、ネットワーク51を介して複数のエンドユーザ端末(クライアント)61に接続されてもよい。ホスト2は、これらエンドユーザ端末61に対して様々なサービスを提供することができる。 In the case where the host 2 is realized 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) Platform as a Service (PaaS), which provides a system operation platform to each client (each end-user terminal 61), and (2) Infrastructure as a Service (IaaS), which provides infrastructure such as a virtual server to each client (each end-user terminal 61).

複数の仮想マシンが、このホスト(サーバ)2として機能する物理サーバ上で実行されてもよい。ホスト(サーバ)2上で走るこれら仮想マシンの各々は、対応する幾つかのクライアント(エンドユーザ端末61)に各種サービスを提供するように構成された仮想サーバとして機能することができる。 Multiple virtual machines may be executed on this physical server functioning as the 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 number of corresponding clients (end-user terminals 61).

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

従来型SSDにおいては、NAND型フラッシュメモリのブロック/ページの階層構造はSSD内のフラッシュトランスレーション層(FTL)によって隠蔽されている。つまり、従来型SSDのFTLは、(1)論理物理アドレス変換テーブルとして機能するルックアップテーブルを使用して、論理アドレスそれぞれとNAND型フラッシュメモリの物理アドレスそれぞれとの間のマッピングを管理する機能、(2)ページ単位のリード/ライトとブロック単位の消去動作とを隠蔽するための機能、(3)NAND型フラッシュメモリのガベージコレクション(GC)を実行する機能、等を有している。論理アドレスそれぞれとNAND型フラッシュメモリの物理アドレスとの間のマッピングは、ホストからは見えない。NAND型フラッシュメモリのブロック/ページ構造もホストからは見えない。 In conventional SSDs, the block/page hierarchical structure of the NAND flash memory is hidden by the flash translation layer (FTL) in the SSD. In other words, the FTL of conventional SSDs has the following functions: (1) a function to manage mapping between each logical address and each physical address of the NAND flash memory using a lookup table that functions as a logical-physical address translation table, (2) a function to conceal page-based read/write and block-based erase operations, and (3) a function to perform garbage collection (GC) of the NAND flash memory. The mapping between each logical address and the physical address of the NAND flash memory is invisible to the host. The block/page structure of the NAND flash memory is also invisible to the host.

一方、ホストにおいても、一種のアドレス変換(アプリケーションレベルアドレス変換)が実行されることがある。このアドレス変換は、アプリケーションレベルアドレス変換テーブルを使用して、アプリケーションレベルの論理アドレスそれぞれとSSD用の論理アドレスそれぞれとの間のマッピングを管理する。また、ホストにおいても、SSD用の論理アドレス空間上に生じるフラグメントの解消のために、この論理アドレス空間上のデータ配置を変更する一種のGC(アプリケーションレベルGC)が実行される。 On the other hand, a type of address conversion (application level address conversion) may also be performed on the host. This address conversion uses an application level address conversion table to manage the mapping between each application level logical address and each logical address for the SSD. Also, on the host, a type of GC (application level GC) is performed that changes the data arrangement on the logical address space for the SSD to eliminate fragmentation that occurs in this logical address space.

しかし、ホストおよびSSDがそれぞれアドレス変換テーブルを有するという冗長な構成(SSDは論理物理アドレス変換テーブルとして機能するルックアップテーブルを有し、ホストはアプリケーションレベルアドレス変換テーブルを有する)においては、これらアドレス変換テーブルを保持するために膨大なメモリリソースが消費される。さらに、ホスト側のアドレス変換とSSD側のアドレス変換とを含む2重のアドレス変換は、I/O性能を低下させる要因にもなる。 However, in a redundant configuration in which the host and SSD each have their own address translation table (the SSD has a lookup table that functions as a logical-physical address translation table, and the host has an application-level address translation table), huge memory resources are consumed to hold these address translation tables. Furthermore, the double address translation, which includes address translation on the host side and address translation on the SSD side, can also cause a decrease in I/O performance.

さらに、ホスト側のアプリケーションレベルGCは、SSDへのデータ書き込み量を実際のユーザデータ量の数倍(例えば2倍)程度に増やす要因となる。このようなデータ書き込み量の増加は、SSDのライトアンプリフィケーションとあいまってシステム全体のストレージ性能を低下させ、またSSDの寿命も短くする。 Furthermore, application-level GC on the host side causes the amount of data written to the SSD to increase by several times (e.g., twice) the actual amount of user data. This increase in the amount of data written, combined with write amplification in the SSD, reduces the storage performance of the entire system and also shortens the lifespan of the SSD.

このような問題点を解消するために、従来型SSDのFTLの機能の全てをホストに移すという対策も考えられる。 To resolve these issues, one possible solution would be to move all of the FTL functions of conventional SSDs to the host.

しかし、この対策を実装するためには、NAND型フラッシュメモリのブロックおよびページをホストが直接的にハンドリングすることが必要となる。NAND型フラッシュメモリにおいては、ページ書き込み順序制約があるため、ホストがページを直接ハンドリングすることは困難である。また、NAND型フラッシュメモリにおいては、ブロックが不良ページ(バッドページ)を含む場合がある。バッドページをハンドリングすることはホストにとってはなおさら困難である。 However, to implement this measure, it is necessary for the host to directly handle the blocks and pages of the NAND flash memory. In NAND flash memory, there are page write order constraints, so it is difficult for the host to directly handle the pages. Also, in NAND flash memory, blocks may contain defective pages (bad pages). It is even more difficult for the host to handle bad pages.

そこで、本実施形態では、FTLの役割はホスト2とフラッシュストレージデバイス3との間で分担される。概していえば、ホスト2は論理物理アドレス変換テーブルとして機能するルックアップテーブルを管理するが、ホスト2はデータが書き込まれるべきブロックのブロック番号とこのデータに対応する論理アドレスだけを指定し、このデータが書き込まれるべきこのブロック内の位置(書き込み先位置)はフラッシュストレージデバイス3によって決定される。決定されたこのブロック内の位置(書き込み先位置)を示すブロック内物理アドレスは、フラッシュストレージデバイス3からホスト2に通知される。 Therefore, in this embodiment, the role of the FTL is shared between the host 2 and the flash storage device 3. Generally speaking, the host 2 manages a lookup table that functions as a logical-physical address conversion table, but the host 2 specifies only the block number of the block to which data is to be written and the logical address corresponding to this data, and the location within this block to which this data is to be written (destination location) is determined by the flash storage device 3. The physical address within the block indicating the determined location within the block (destination location) is notified to the host 2 by the flash storage device 3.

このように、ホスト2はブロックのみをハンドリングし、ブロック内の位置(例えば、ページ、ページ内の位置)はフラッシュストレージデバイス3によってハンドリングされる。 In this way, the host 2 only handles blocks, and the positions within the blocks (e.g. pages, positions within pages) are handled by the flash storage device 3.

フラッシュストレージデバイス3にデータを書き込む必要がある時、ホスト2は、ブロック番号を選択(またはフラッシュストレージデバイス3にフリーブロックを割り当てるように要求)し、論理アドレスと、選択したブロックのブロック番号(またはフラッシュストレージデバイス3によって通知される割り当てられたブロックのブロック番号)とを指定するライト要求(ライトコマンド)をフラッシュストレージデバイス3に送信する。フラッシュストレージデバイス3は、指定されたブロック番号を有するブロックにホスト2からのデータを書き込む。この場合、フラッシュストレージデバイス3は、このブロック内の位置(書き込み先位置)を決定し、ホスト2からのデータをこのブロック内の位置(書き込み先位置)に書き込む。そして、フラッシュストレージデバイス3は、このブロック内の位置(書き込み先位置)を示すブロック内物理アドレスを、ライト要求に対するレスポンス(返り値)としてホスト2に通知する。以下では、ホスト2に移されたFTL機能をグローバルFTLと称する。 When data needs to be written to the flash storage device 3, the host 2 selects a block number (or requests the flash storage device 3 to allocate a free block) and sends a write request (write command) to the flash storage device 3, specifying the logical address and the block number of the selected block (or the block number of the allocated block notified by the flash storage device 3). The flash storage device 3 writes the data from the host 2 to the block having the specified block number. In this case, the flash storage device 3 determines a position within this block (destination position) and writes the data from the host 2 to this position within this block (destination position). The flash storage device 3 then notifies the host 2 of the physical address within the block indicating the position within this block (destination position) as a response (return value) to the write request. Hereinafter, the FTL function transferred to the host 2 is referred to as global FTL.

ホスト2のグローバルFTLは、ストレージサービスを実行する機能、ウェアー制御機能、高可用性を実現するための機能、同じ内容を有する複数の重複データ部がストレージに格納されることを防止する重複排除(De-duplication)機能、ガベージコレクション(GC)ブロック選択機能、QoS制御機能等を有する。QoS制御機能には、QoSドメイン毎(またはブロック毎)にアクセス単位を決める機能が含まれる。アクセス単位は、ホスト2がライト/リードすることが可能な最小データサイズ(Grain)を示す。フラッシュストレージデバイス3は単一、あるいは複数のアクセス単位(Grain)をサポートしており、ホスト2は、フラッシュストレージデバイス3が複数のアクセス単位をサポートしている場合にはQoSドメイン毎(またはブロック毎)に、使用すべきアクセス単位をフラッシュストレージデバイス3に指示することができる。 The global FTL of the host 2 has functions such as a function to execute storage services, a wear control function, a function to realize high availability, a deduplication function to prevent multiple duplicate data parts having the same contents from being stored in the storage, a garbage collection (GC) block selection function, and a QoS control function. The QoS control function includes a function to determine the access unit for each QoS domain (or for each block). The access unit indicates the minimum data size (grain) that the host 2 can write/read. The flash storage device 3 supports single or multiple access units (grain), and the host 2 can instruct the flash storage device 3 which access unit to use for each QoS domain (or for each block) if the flash storage device 3 supports multiple access units.

また、QoS制御機能には、QoSドメイン間の性能干渉をできるだけ防ぐための機能が含まれている。この機能は、基本的には、安定したレイテンシを保つための機能である。 The QoS control function also includes a function for preventing performance interference between QoS domains as much as possible. This function is basically a function for maintaining stable latency.

一方、フラッシュストレージデバイス3は、ローレベルアブストラクション(LLA)を実行することができる。LLAはNAND型フラッシュメモリのアブストラクションのための機能である。LLAは、不良ページ(バッドページ)を隠蔽する機能、ページ書き込み順序制約を守る機能を含む。LLAは、GC実行機能も含む。GC実行機能は、ホスト2によって指定されたコピー元ブロック(GCソースブロック)内の有効データを、ホスト2によって指定されたコピー先ブロック(GCデスティネーションブロック)にコピーする。フラッシュストレージデバイス3のGC実行機能は、有効データを書き込むべきGCデスティネーションブロック内の位置(コピー先位置)を決定し、GCソースブロック内の有効データを、GCデスティネーションブロック内のコピー先位置にコピーする。 On the other hand, the flash storage device 3 can execute low-level abstraction (LLA). LLA is a function for abstraction of NAND-type flash memory. LLA includes a function for concealing defective pages (bad pages) and a function for observing page write order constraints. LLA also includes a GC execution function. The GC execution function copies valid data in a source block (GC source block) specified by the host 2 to a destination block (GC destination block) specified by the host 2. The GC execution function of the flash storage device 3 determines a position (destination position) in the GC destination block to which the valid data should be written, and copies the valid data in the GC source block to the destination position in the GC destination block.

図2は、従来型SSDとホストとの間の役割分担と、本実施形態のフラッシュストレージデバイス3とホスト2との間の役割分担とを示す。 Figure 2 shows the division of roles between a conventional SSD and a host, and the division of roles between the flash storage device 3 and the host 2 in this embodiment.

図2の左部は、従来型SSDと仮想ディスクサービスを実行するホストとを含む計算機システム全体の階層構造を表している。 The left part of Figure 2 shows the hierarchical structure of the entire computer system, including a conventional SSD and a host running a virtual disk service.

ホスト(サーバ)においては、複数のエンドユーザに複数の仮想マシンを提供するための仮想マシンサービス101が実行される。仮想マシンサービス101上の各仮想マシンにおいては、対応するエンドユーザによって使用されるオペレーティングシステムおよびユーザアプリケーション102が実行される。 A virtual machine service 101 is executed on the host (server) to provide multiple virtual machines to multiple end users. Each virtual machine on the virtual machine service 101 executes an operating system and user applications 102 used by the corresponding end user.

また、ホスト(サーバ)においては、複数のユーザアプリケーション102に対応する複数の仮想ディスクサービス103が実行される。各仮想ディスクサービス103は、従来型SSD内のストレージリソースの容量の一部を、対応するユーザアプリケーション102用のストレージリソース(仮想ディスク)として割り当てる。各仮想ディスクサービス103においては、アプリケーションレベルアドレス変換テーブルを使用して、アプリケーションレベルの論理アドレスをSSD用の論理アドレスに変換するアプリケーションレベルアドレス変換も実行される。さらに、ホストにおいては、アプリケーションレベルGC104も実行される。 In addition, in the host (server), multiple virtual disk services 103 corresponding to multiple user applications 102 are executed. Each virtual disk service 103 allocates a portion of the capacity of the storage resources in the conventional SSD as a storage resource (virtual disk) for the corresponding user application 102. In each virtual disk service 103, an application level address conversion is also executed, which converts an application level logical address into a logical address for the SSD, using an application level address conversion table. In addition, in the host, an application level GC 104 is also executed.

ホスト(サーバ)から従来型SSDへのコマンドの送信および従来型SSDからホスト(サーバ)へのコマンド完了のレスポンスの返送は、ホスト(サーバ)および従来型SSDの各々に存在するI/Oキュー200を介して実行される。 The sending of commands from the host (server) to the conventional SSD and the return of command completion responses from the conventional SSD to the host (server) are performed via an I/O queue 200 present in each of the host (server) and the conventional SSD.

従来型SSDは、ライトバッファ(WB)301、ルックアップテーブル(LUT)302、ガベージコレクション機能303、NAND型フラッシュメモリ(NANDフラッシュアレイ)304を含む。従来型SSDは、一つのルックアップテーブル(LUT)302のみを管理しており、NAND型フラッシュメモリ(NANDフラッシュアレイ)304のリソースは複数の仮想ディスクサービス103によって共有される。 A conventional SSD includes a write buffer (WB) 301, a lookup table (LUT) 302, a garbage collection function 303, and a NAND flash memory (NAND flash array) 304. A conventional SSD manages only one lookup table (LUT) 302, and the resources of the NAND flash memory (NAND flash array) 304 are shared by multiple virtual disk services 103.

この構成においては、仮想ディスクサービス103下のアプリケーションレベルGC104と従来型SSD内のガベージコレクション機能303(LUTレベルGC)とを含む重複したGCにより、ライトアンプリフィケーションが大きくなる。また、従来型SSDにおいては、あるエンドユーザまたはある仮想ディスクサービス103からのデータ書き込み量の増加によってGCの頻度が増加し、これによって他のエンドユーザまたは他の仮想ディスクサービス103に対するI/O性能が劣化するというノイジーネイバー問題が生じうる。 In this configuration, write amplification increases due to overlapping GCs including the application level GC 104 under the virtual disk service 103 and the garbage collection function 303 (LUT level GC) in the conventional SSD. In addition, in conventional SSDs, an increase in the amount of data written from an end user or a virtual disk service 103 increases the frequency of GCs, which can cause a noisy neighbor problem in which I/O performance for other end users or other virtual disk services 103 deteriorates.

また、各仮想ディスクサービス内のアプリケーションレベルアドレス変換テーブルと従来型SSD内のLUT302とを含む重複したリソースの存在により、多くのメモリリソースが消費される。 In addition, the existence of overlapping resources, including the application level address translation table in each virtual disk service and the LUT 302 in a conventional SSD, consumes a lot of memory resources.

図2の右部は、本実施形態のフラッシュストレージデバイス3とホスト2とを含む計算機システム全体の階層構造を表している。 The right part of Figure 2 shows the hierarchical structure of the entire computer system including the flash storage device 3 and the host 2 of this embodiment.

ホスト(サーバ)2においては、複数のエンドユーザに複数の仮想マシンを提供するための仮想マシンサービス401が実行される。仮想マシンサービス401上の各仮想マシンにおいては、対応するエンドユーザによって使用されるオペレーティングシステムおよびユーザアプリケーション402が実行される。 A virtual machine service 401 is executed on the host (server) 2 to provide multiple virtual machines to multiple end users. An operating system and user applications 402 used by the corresponding end user are executed on each virtual machine on the virtual machine service 401.

また、ホスト(サーバ)2においては、複数のユーザアプリケーション402に対応する複数のI/Oサービス403が実行される。これらI/Oサービス403には、LBAベースのブロックI/Oサービス、キー・バリュー・ストアサービスなどが含まれてもよい。各I/Oサービス403は、論理アドレスそれぞれとフラッシュストレージデバイス3の物理アドレスそれぞれとの間のマッピングを管理するルックアップテーブル(LUT)411を含む。ここで、論理アドレスとは、アクセス対象のデータを識別可能な識別子を意味する。この論理アドレスは、論理アドレス空間上の位置を指定する論理ブロックアドレス(LBA)であってもよいし、あるいは、キー・バリュー・ストアのキー(タグ)であってもよいし、キーのハッシュ値であってもよい。 In addition, in the host (server) 2, multiple I/O services 403 corresponding to multiple user applications 402 are executed. These I/O services 403 may include an LBA-based block I/O service, a key-value store service, and the like. Each I/O service 403 includes a lookup table (LUT) 411 that manages the mapping between each logical address and each physical address of the flash storage device 3. Here, a logical address means an identifier that can identify the data to be accessed. This logical address may be a logical block address (LBA) that specifies a position in the logical address space, or may be a key (tag) of a key-value store, or may be a hash value of the key.

LBAベースのブロックI/Oサービスにおいては、論理アドレス(LBA)それぞれとフラッシュストレージデバイス3の物理アドレスそれぞれとの間のマッピングを管理するLUT411が使用されてもよい。 In an LBA-based block I/O service, a LUT 411 may be used to manage the mapping between each logical address (LBA) and each physical address of the flash storage device 3.

キー・バリュー・ストアサービスにおいては、論理アドレス(つまり、キーのようなタグ)それぞれとこれら論理アドレス(つまり、キーのようなタグ)に対応するデータが格納されているフラッシュストレージデバイス3内の物理記憶位置を示す物理アドレスそれぞれとの間のマッピングを管理するLUT411が使用されてもよい。このLUT411においては、タグと、このタグによって識別されるデータが格納されている物理アドレスと、このデータのデータ長との対応関係が管理されてもよい。 In the key-value store service, a LUT 411 may be used that manages the mapping between each logical address (i.e., a key-like tag) and each physical address indicating the physical memory location in the flash storage device 3 where the data corresponding to these logical addresses (i.e., the key-like tag) is stored. This LUT 411 may manage the correspondence between the tag, the physical address where the data identified by this tag is stored, and the data length of this data.

各エンドユーザは、使用すべきアドレッシング方法(LBA、キー・バリュー・ストアのキー、等)を選択することができる。 Each end user can choose which addressing method to use (LBA, key-value store key, etc.).

これら各LUT411は、ユーザアプリケーション402からの論理アドレスそれぞれをフラッシュストレージデバイス3用の論理アドレスそれぞれに変換するのではなく、ユーザアプリケーション402からの論理アドレスそれぞれをフラッシュストレージデバイス3の物理アドレスそれぞれに変換する。つまり、これら各LUT411は、フラッシュストレージデバイス3用の論理アドレスを物理アドレスに変換するテーブルとアプリケーションレベルアドレス変換テーブルとが統合(マージ)されたテーブルである。 Each of these LUTs 411 does not convert each logical address from the user application 402 into a respective logical address for the flash storage device 3, but converts each logical address from the user application 402 into a respective physical address for the flash storage device 3. In other words, each of these LUTs 411 is a table in which a table for converting logical addresses for the flash storage device 3 into physical addresses and an application level address conversion table are integrated (merged).

また、各I/Oサービス403は、GCブロック選択機能を含む。GCブロック選択機能は、対応するLUTを使用して各ブロックの有効データ量を管理することができ、これによってGCソースブロックを選択することができる。 Each I/O service 403 also includes a GC block selection function. The GC block selection function can manage the amount of valid data in each block using a corresponding LUT, thereby selecting a GC source block.

ホスト(サーバ)2においては、上述のQoSドメイン毎にI/Oサービス403が存在してもよい。あるQoSドメインに属するI/Oサービス403は、対応するQoSドメイン内のユーザアプリケーション402によって使用される論理アドレスそれぞれと対応するQoSドメインに割り当てられたリソースグループに属するブロック群のブロック番号それぞれとの間のマッピングを管理してもよい。 In the host (server) 2, an I/O service 403 may exist for each of the above-mentioned QoS domains. The I/O service 403 belonging to a certain QoS domain may manage the mapping between each of the logical addresses used by the user application 402 in the corresponding QoS domain and each of the block numbers of the block group belonging to the resource group assigned to the corresponding QoS domain.

ホスト(サーバ)2からフラッシュストレージデバイス3へのコマンドの送信およびフラッシュストレージデバイス3からホスト(サーバ)2へのコマンド完了のレスポンス等の返送は、ホスト(サーバ)2およびフラッシュストレージデバイス3の各々に存在するI/Oキュー500を介して実行される。これらI/Oキュー500も、複数のQoSドメインに対応する複数のキューグループに分類されていてもよい。 The sending of commands from the host (server) 2 to the flash storage device 3 and the return of command completion responses and the like from the flash storage device 3 to the host (server) 2 are performed via I/O queues 500 present in both the host (server) 2 and the flash storage device 3. These I/O queues 500 may also be classified into multiple queue groups corresponding to multiple QoS domains.

フラッシュストレージデバイス3は、複数のQoSドメインに対応する複数のライトバッファ(WB)601、複数のQoSドメインに対応する複数のガベージコレクション(GC)機能602、NAND型フラッシュメモリ(NANDフラッシュアレイ)603を含む。 The flash storage device 3 includes multiple write buffers (WB) 601 corresponding to multiple QoS domains, multiple garbage collection (GC) functions 602 corresponding to multiple QoS domains, and a NAND type flash memory (NAND flash array) 603.

この図2の右部に示す構成においては、上位階層(ホスト2)はブロック境界を認識することができるので、ブロック境界/ブロックサイズを考慮してユーザデータを各ブロックに書き込むことができる。つまり、ホスト2はNAND型フラッシュメモリ(NANDフラッシュアレイ)603の個々のブロックを認識することができ、これにより、例えば、一つのブロック全体に一斉にデータを書き込む、一つのブロック内のデータ全体を削除または更新によって無効化する、といった制御を行うことが可能となる。この結果、一つのブロックに有効データと無効データが混在されるという状況を起こりにくくすることが可能となる。したがって、GCを実行することが必要となる頻度を低減することができる。GCの頻度を低減することにより、ライトアンプリフィケーションが低下され、フラッシュストレージデバイス3の性能の向上、フラッシュストレージデバイス3の寿命の最大化を実現できる。このように、上位階層(ホスト2)がブロック番号を認識可能な構成は有用である。 In the configuration shown on the right side of FIG. 2, the upper hierarchical level (host 2) can recognize block boundaries, so that user data can be written to each block taking into account block boundaries/block sizes. In other words, the host 2 can recognize each block of the NAND flash memory (NAND flash array) 603, which makes it possible to perform control such as writing data to an entire block at once, or invalidating all data in a block by deleting or updating it. As a result, it becomes possible to make it difficult for a situation in which valid data and invalid data are mixed in a single block to occur. Therefore, it is possible to reduce the frequency with which GC needs to be executed. By reducing the frequency of GC, write amplification is reduced, which improves the performance of the flash storage device 3 and maximizes the lifespan of the flash storage device 3. In this way, a configuration in which the upper hierarchical level (host 2) can recognize block numbers is useful.

一方、データが書き込まれるべきブロック内の位置は、上位階層(ホスト2)ではなく、フラッシュストレージデバイス3によって決定される。したがって、不良ページ(バッドページ)を隠蔽することができ、またページ書き込み順序制約を守ることができる。 On the other hand, the location within the block where data should be written is determined by the flash storage device 3, not the higher hierarchical level (host 2). Therefore, bad pages can be concealed and page write order constraints can be respected.

図3は、図1のシステム構成の変形例を示す。 Figure 3 shows a modified example of the system configuration in Figure 1.

図3においては、複数のホスト2Aと複数のフラッシュストレージデバイス3との間のデータ転送がネットワーク機器(ここでは、ネットワークスイッチ1)を介して実行される。 In FIG. 3, data transfer between multiple hosts 2A and multiple flash storage devices 3 is performed via a network device (here, a network switch 1).

すなわち、図3の計算機システムにおいては、図1のホスト(サーバ)2のストレージ管理機能がマネージャ2Bに移され、且つホスト(サーバ)2のフロントエンド機能が複数のホスト(エンドユーザサービス用ホスト)2Aに移されている。 In other words, in the computer system of FIG. 3, the storage management function of the host (server) 2 in FIG. 1 is transferred to the manager 2B, and the front-end function of the host (server) 2 is transferred to multiple hosts (hosts for end-user services) 2A.

マネージャ2Bは、複数のフラッシュストレージデバイス3を管理し、各ホスト(エンドユーザサービス用ホスト)2Aからの要求に応じて、これらフラッシュストレージデバイス3のストレージリソースを各ホスト(エンドユーザサービス用ホスト)2Aに割り当てる。 The manager 2B manages multiple flash storage devices 3 and allocates the storage resources of these flash storage devices 3 to each host (host for end user services) 2A in response to a request from each host (host for end user services) 2A.

各ホスト(エンドユーザサービス用ホスト)2Aは、ネットワークを介して一つ以上のエンドユーザ端末61に接続される。各ホスト(エンドユーザサービス用ホスト)2Aは、上述の統合(マージ)された論理物理アドレス変換テーブルであるルックアップテーブル(LUT)を管理する。各ホスト(エンドユーザサービス用ホスト)2Aは、自身のLUTを使用して、対応するエンドユーザによって使用される論理アドレスそれぞれと自身に割り当てられたリソースの物理アドレスそれぞれとの間のマッピングのみを管理する。したがって、この構成は、システムを容易にスケールアウトすることを可能にする。 Each host (host for end user services) 2A is connected to one or more end user terminals 61 via a network. Each host (host for end user services) 2A manages a lookup table (LUT), which is the merged logical-physical address conversion table described above. Each host (host for end user services) 2A uses its own LUT to manage only the mapping between each of the logical addresses used by the corresponding end user and each of the physical addresses of the resources assigned to it. This configuration therefore makes it possible to easily scale out the system.

各ホスト2AのグローバルFTLは、ルックアップテーブル(LUT)を管理する機能、高可用性を実現するための機能、QoS制御機能、GCブロック選択機能等を有する。 The global FTL of each host 2A has functions such as managing lookup tables (LUTs), achieving high availability, QoS control, and GC block selection functions.

マネージャ2Bは、複数のフラッシュストレージデバイス3を管理するための専用のデバイス(計算機)である。マネージャ2Bは、各ホスト2Aから要求された容量分のストレージリソースを予約するグローバルリソース予約機能を有する。さらに、マネージャ2Bは、各フラッシュストレージデバイス3の消耗度を監視するためのウェアー監視機能、予約されたストレージリソース(NANDリソース)を各ホスト2Aに割り当てるNANDリソース割り当て機能、QoS制御機能、グローバルクロック管理機能、等を有する。 The manager 2B is a dedicated device (computer) for managing multiple flash storage devices 3. The manager 2B has a global resource reservation function that reserves storage resources for the capacity requested by each host 2A. In addition, the manager 2B has a wear monitoring function for monitoring the wear level of each flash storage device 3, a NAND resource allocation function for allocating reserved storage resources (NAND resources) to each host 2A, a QoS control function, a global clock management function, and the like.

各フラッシュストレージデバイス3のローレベルアブストラクション(LLA)は、不良ページ(バッドページ)を隠蔽する機能、ページ書き込み順序制約を守る機能、ライトバッファを管理する機能、GC実行機能等を有する。 The low-level abstraction (LLA) of each flash storage device 3 has functions such as concealing bad pages, observing page write order constraints, managing write buffers, and executing GC.

図3のシステム構成によれば、各フラッシュストレージデバイス3の管理はマネージャ2Bによって実行されるので、各ホスト2Aは、自身に割り当てられた一つ以上のフラッシュストレージデバイス3にI/O要求を送信する動作と、フラッシュストレージデバイス3からのレスポンスを受信するという動作とのみを実行すればよい。つまり、複数のホスト2Aと複数のフラッシュストレージデバイス3との間のデータ転送はネットワークスイッチ1のみを介して実行され、マネージャ2Bはこのデータ転送には関与しない。また、上述したように、ホスト2Aそれぞれによって管理されるLUTの内容は互いに独立している。よって、容易にホスト2Aの数を増やすことができるので、スケールアウト型のシステム構成を実現することができる。 According to the system configuration of FIG. 3, management of each flash storage device 3 is performed by the manager 2B, so each host 2A only needs to send an I/O request to one or more flash storage devices 3 assigned to it, and receive a response from the flash storage device 3. In other words, data transfer between multiple hosts 2A and multiple flash storage devices 3 is performed only via the network switch 1, and the manager 2B is not involved in this data transfer. Also, as described above, the contents of the LUTs managed by each host 2A are independent of each other. Therefore, the number of hosts 2A can be easily increased, making it possible to realize a scale-out system configuration.

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

フラッシュストレージデバイス3は、コントローラ4および不揮発性メモリ(NAND型フラッシュメモリ)5を備える。フラッシュストレージデバイス3は、ランダムアクセスメモリ、例えば、DRAM6も備えていてもよい。 The flash storage device 3 includes a controller 4 and a non-volatile memory (NAND flash memory) 5. The flash storage device 3 may also include a random access memory, for example, a 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は、データ書き込み動作およびデータ読み込み動作の単位である。 The memory cell array of the NAND flash memory 5 includes multiple blocks BLK0 to BLKm-1. Each of the blocks BLK0 to BLKm-1 is organized into multiple pages (here, pages P0 to Pn-1). The blocks BLK0 to BLKm-1 function as erase units. A block may also be referred to as an "erase block," a "physical block," or a "physical erase block." Each of the pages P0 to Pn-1 includes multiple memory cells connected to the same word line. The pages P0 to Pn-1 are the units of data write and read operations.

コントローラ4は、Toggle、オープンNANDフラッシュインタフェース(ONFI)のようなNANDインタフェース13を介して、不揮発性メモリであるNAND型フラッシュメモリ5に電気的に接続されている。コントローラ4は、NAND型フラッシュメモリ5を制御するように構成されたメモリコントローラ(制御回路)である。 The controller 4 is electrically connected to the NAND flash memory 5, which is a non-volatile memory, via a NAND interface 13 such as Toggle or an Open NAND Flash Interface (ONFI). The controller 4 is a memory controller (control circuit) configured to control the NAND flash memory 5.

NAND型フラッシュメモリ5は、図5に示すように、複数のNAND型フラッシュメモリダイを含む。各NAND型フラッシュメモリダイは、複数のブロックBLKを含むメモリセルアレイとこのメモリセルアレイを制御する周辺回路とを含む不揮発性メモリダイである。個々のNAND型フラッシュメモリダイは独立して動作可能である。このため、NAND型フラッシュメモリダイは、並列動作単位として機能する。NAND型フラッシュメモリダイは、「NAND型フラッシュメモリチップ」または「不揮発性メモリチップ」とも称される。図5においては、NANDインタフェース13に16個のチャンネルCh1、Ch2、…Ch16が接続されており、これらチャンネルCh1、Ch2、…Ch16の各々に、同数(例えばチャンネル当たり2個のダイ)のNAND型フラッシュメモリダイそれぞれが接続されている場合が例示されている。各チャンネルは、対応するNAND型フラッシュメモリダイと通信するための通信線(メモリバス)を含む。 As shown in FIG. 5, the NAND flash memory 5 includes a plurality of NAND flash memory dies. Each NAND flash memory die is a non-volatile memory die including a memory cell array including a plurality of blocks BLK and a peripheral circuit that controls the memory cell array. Each NAND flash memory die can operate independently. For this reason, the NAND flash memory die functions as a parallel operation unit. The NAND flash memory die is also called a "NAND flash memory chip" or a "non-volatile memory chip". In FIG. 5, 16 channels Ch1, Ch2, ... Ch16 are connected to the NAND interface 13, and the same number of NAND flash memory dies (e.g., two dies per channel) are connected to each of these channels Ch1, Ch2, ... Ch16. Each channel includes a communication line (memory bus) for communicating with the corresponding NAND flash memory die.

コントローラ4は、チャンネルCh1、Ch2、…Ch16を介してNAND型フラッシュメモリダイ#1~#32を制御する。コントローラ4は、チャンネルCh1、Ch2、…Ch16を同時に駆動することができる。 The controller 4 controls the NAND flash memory dies #1 to #32 via channels Ch1, Ch2, ... Ch16. The controller 4 can drive channels Ch1, Ch2, ... Ch16 simultaneously.

チャンネルCh1~Ch16に接続された16個のNAND型フラッシュメモリダイ#1~#16は第1のバンクとして編成されてもよく、またチャンネルCh1~Ch16に接続された残りの16個のNAND型フラッシュメモリダイ#17~#32は第2のバンクとして編成されてもよい。バンクは、複数のメモリモジュールをバンクインタリーブによって並列動作させるための単位として機能する。図5の構成例においては、16チャンネルと、2つのバンクを使用したバンクインタリーブとによって、最大32個のNAND型フラッシュメモリダイを並列動作させることができる。 The 16 NAND flash memory dies #1 to #16 connected to channels Ch1 to Ch16 may be organized as a first bank, and the remaining 16 NAND flash memory dies #17 to #32 connected to channels Ch1 to Ch16 may be organized as a second bank. The bank functions as a unit for operating multiple memory modules in parallel by bank interleaving. In the configuration example of FIG. 5, a maximum of 32 NAND flash memory dies can be operated in parallel by using 16 channels and bank interleaving using two banks.

本実施形態では、コントローラ4は、各々が複数のブロックBLKから構成される複数のブロック(以下、スーパーブロックと称する)を管理してもよく、スーパーブロックの単位で消去動作を実行してもよい。 In this embodiment, the controller 4 may manage multiple blocks (hereinafter referred to as superblocks), each of which is composed of multiple blocks BLK, and may perform erase operations in units of superblocks.

スーパーブロックは、これに限定されないが、NAND型フラッシュメモリダイ#1~#32から一つずつ選択される計32個のブロックBLKを含んでいてもよい。なお、NAND型フラッシュメモリダイ#1~#32の各々はマルチプレーン構成を有していてもよい。例えば、NAND型フラッシュメモリダイ#1~#32の各々が、2つのプレーンを含むマルチプレーン構成を有する場合には、一つのスーパーブロックは、NAND型フラッシュメモリダイ#1~#32に対応する64個のプレーンから一つずつ選択される計64個のブロックBLKを含んでいてもよい。図6には、一つのスーパーブロックSBが、NAND型フラッシュメモリダイ#1~#32から一つずつ選択される計32個のブロックBLK(図5においては太枠で囲まれているブロックBLK)から構成される場合が例示されている。 Although not limited to this, the superblock may include a total of 32 blocks BLK selected one by one from the NAND flash memory dies #1 to #32. Each of the NAND flash memory dies #1 to #32 may have a multi-plane configuration. For example, if each of the NAND flash memory dies #1 to #32 has a multi-plane configuration including two planes, one superblock may include a total of 64 blocks BLK selected one by one from the 64 planes corresponding to the NAND flash memory dies #1 to #32. FIG. 6 illustrates a case in which one superblock SB is composed of a total of 32 blocks BLK (blocks BLK surrounded by a thick frame in FIG. 5) selected one by one from the NAND flash memory dies #1 to #32.

図4に示されているように、コントローラ4は、ホストインタフェース11、CPU12、NANDインタフェース13、およびDRAMインタフェース14等を含む。これらCPU12、NANDインタフェース13、DRAMインタフェース14は、バス10を介して相互接続される。 As shown in FIG. 4, the controller 4 includes a host interface 11, a CPU 12, a NAND interface 13, and a DRAM interface 14. The CPU 12, the NAND interface 13, and the DRAM interface 14 are interconnected via a bus 10.

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

CPU12は、ライト動作制御部21、リード動作制御部22、およびGC動作制御部23として機能することができる。これらライト動作制御部21、リード動作制御部22、およびGC動作制御部23においては、図2の右部に示すシステム構成を実現するためのアプリケーションプログラムインタフェース(API)が実装されている。 The CPU 12 can function as a write operation control unit 21, a read operation control unit 22, and a GC operation control unit 23. In these write operation control unit 21, read operation control unit 22, and GC operation control unit 23, an application program interface (API) is implemented to realize the system configuration shown in the right part of FIG. 2.

ライト動作制御部21は、ブロック番号と論理アドレスを指定するライト要求(ライトコマンド)をホスト2から受信する。論理アドレスは、書き込むべきデータ(ユーザデータ)を識別可能な識別子であり、例えば、LBAであってもよいし、あるいはキー・バリュー・ストアのキーのようなタグであってもよいし、キーのハッシュ値であってもよい。ブロック番号は、このデータが書き込まれるべきブロックを指定する識別子である。ブロック番号としては、複数のブロック内の任意の一つを一意に識別可能な様々な値を使用し得る。ブロック番号によって指定されるブロックは、物理ブロックであってもよいし、上述のスーパーブロックであってもよい。ライトコマンドを受信した場合、ライト動作制御部21は、まず、ホスト2からのデータを書き込むべき、この指定されたブロック番号を有するブロック(書き込み先ブロック)内の位置(書き込み先位置)を決定する。次いで、ライト動作制御部21は、ホスト2からのデータ(ライトデータ)を、この書き込み先ブロックの書き込み先位置に書き込む。この場合、ライト動作制御部21は、ホスト2からのデータのみならず、このデータとこのデータの論理アドレスの双方を書き込み先ブロックに書き込むことができる。 The write operation control unit 21 receives a write request (write command) that specifies a block number and a logical address from the host 2. The logical address is an identifier that can identify the data (user data) to be written, and may be, for example, an LBA, or a tag such as a key in a key-value store, or a hash value of the key. The block number is an identifier that specifies the block to which this data is to be written. As the block number, various values that can uniquely identify any one of multiple blocks may be used. The block specified by the block number may be a physical block or the above-mentioned superblock. When a write command is received, the write operation control unit 21 first determines a position (write destination position) in the block (write destination block) having the specified block number to which the data from the host 2 should be written. Next, the write operation control unit 21 writes the data (write data) from the host 2 to the write destination position of the write destination block. In this case, the write operation control unit 21 can write not only the data from the host 2 but also both the data and the logical address of the data to the write destination block.

そして、ライト動作制御部21は、この書き込み先ブロックの上述の書き込み先位置を示すブロック内物理アドレスをホスト2に通知する。このブロック内物理アドレスは、この書き込み先ブロック内の書き込み先位置を示すブロック内オフセットによって表される。 Then, the write operation control unit 21 notifies the host 2 of the physical address within the block that indicates the above-mentioned write destination position in the write destination block. This physical address within the block is represented by an offset within the block that indicates the write destination position within the write destination block.

この場合、このブロック内オフセットは、書き込み先ブロックの先頭から書き込み先位置までのオフセット、つまり書き込み先ブロックの先頭に対する書き込み先位置のオフセットを示す。書き込み先ブロックの先頭から書き込み先位置までのオフセットのサイズは、ページサイズとは異なるサイズを有する粒度(Grain)の倍数で示される。粒度(Grain)は、上述のアクセス単位である。粒度(Grain)のサイズの最大値は、ブロックサイズまでに制限される。換言すれば、ブロック内オフセットは、書き込み先ブロックの先頭から書き込み先位置までのオフセットをページサイズとは異なるサイズを有する粒度の倍数で示す。 In this case, the offset within the block indicates the offset from the beginning of the destination block to the destination position, that is, the offset of the destination position relative to the beginning of the destination block. The size of the offset from the beginning of the destination block to the destination position is indicated as a multiple of a granularity (Grain) having a size different from the page size. The granularity (Grain) is the access unit described above. The maximum value of the granularity (Grain) size is limited to the block size. In other words, the offset within the block indicates the offset from the beginning of the destination block to the destination position as a multiple of a granularity having a size different from the page size.

粒度(Grain)は、ページサイズよりも小さいサイズを有していてもよい。例えば、ページサイズが16Kバイトである場合、粒度(Grain)は、そのサイズが4Kバイトであってもよい。この場合、ある一つのブロックにおいては、各々サイズが4Kバイトである複数のオフセット位置が規定される。ブロック内の最初のオフセット位置に対応するブロック内オフセットは、例えば0であり、ブロック内の次のオフセット位置に対応するブロック内オフセットは、例えば1である、ブロック内のさらに次のオフセット位置に対応するブロック内オフセットは、例えば2である。 The granularity may have a size smaller than the page size. For example, if the page size is 16 Kbytes, the granularity may have a size of 4 Kbytes. In this case, in one block, multiple offset positions are defined, each of which is 4 Kbytes in size. The intra-block offset corresponding to the first offset position in the block is, for example, 0, the intra-block offset corresponding to the next offset position in the block is, for example, 1, and the intra-block offset corresponding to the next offset position in the block is, for example, 2.

あるいは、粒度(Grain)は、ページサイズよりも大きなサイズを有していてもよい。例えば、粒度(Grain)は、ページサイズの数倍のサイズであってもよい。ページサイズが16Kバイトである場合、粒度は、32Kバイトのサイズであってもよい。 Alternatively, the granularity may have a size larger than the page size. For example, the granularity may be several times the size of the page size. If the page size is 16 Kbytes, the granularity may be 32 Kbytes in size.

このように、ライト動作制御部21は、ホスト2からのブロック番号を有するブロック内の書き込み先位置を自身で決定し、そしてホスト2からのライトデータをこのブロック内のこの書き込み先位置に書き込む。そして、ライト動作制御部21は、この書き込み先位置を示すブロック内物理アドレス(ブロック内オフセット)をライト要求に対応するレスポンス(返り値)としてホスト2に通知する。あるいは、ライト動作制御部21は、ブロック内物理アドレス(ブロック内オフセット)のみをホスト2に通知するのではなく、論理アドレスとブロック番号とブロック内物理アドレス(ブロック内オフセット)との組をホスト2に通知してもよい。 In this way, the write operation control unit 21 determines by itself the write destination location within the block having the block number from the host 2, and writes the write data from the host 2 to this write destination location within this block. The write operation control unit 21 then notifies the host 2 of the physical address within the block (offset within the block) indicating this write destination location as a response (return value) corresponding to the write request. Alternatively, the write operation control unit 21 may notify the host 2 of a set of a logical address, block number, and physical address within the block (offset within the block) rather than notifying the host 2 of only the physical address within the block (offset within the block).

したがって、フラッシュストレージデバイス3は、ブロック番号をホスト2にハンドリングさせつつ、ページ書き込み順序制約、バッドページ、ページサイズ等を隠蔽することができる。 Therefore, the flash storage device 3 can hide page write order constraints, bad pages, page sizes, etc., while allowing the host 2 to handle block numbers.

この結果、ホスト2は、ブロック境界は認識できるが、ページ書き込み順序制約、バッドページ、ページサイズについては意識することなく、どのユーザデータがどのブロック番号に存在するかを管理することができる。 As a result, host 2 can recognize block boundaries but can manage which user data resides in which block number without being aware of page write order constraints, bad pages, or page sizes.

リード動作制御部22は、物理アドレス(すなわち、ブロック番号およびブロック内オフセット)を指定するリード要求(リードコマンド)をホスト2から受信した場合、これらブロック番号およびブロック内オフセットに基づいて、リード対象のブロック内のリード対象の物理記憶位置からデータをリードする。リード対象のブロックは、ブロック番号によって特定される。このブロック内のリード対象の物理記憶位置は、ブロック内オフセットによって特定される。このブロック内オフセットを使用することにより、ホスト2は、NAND型フラッシュメモリの世代毎の異なるページサイズをハンドリングする必要がない。 When the read operation control unit 22 receives a read request (read command) from the host 2 that specifies a physical address (i.e., a block number and an offset within the block), it reads data from the physical storage location of the read target in the block to be read, based on the block number and offset within the block. The block to be read is identified by the block number. The physical storage location of the read target in this block is identified by the offset within the block. By using this offset within the block, the host 2 does not need to handle the different page sizes for each generation of NAND flash memory.

リード対象の物理記憶位置を得るために、リード動作制御部22は、まず、このブロック内オフセットを、ページサイズを表す粒度の数(ページサイズが16Kバイトで粒度(Grain)が4Kバイトである場合には、ページサイズを表す粒度の数は4)で除算し、そしてこの除算によって得られる商および余りを、リード対象のページ番号およびリード対象のページ内オフセットとしてそれぞれ決定してもよい。 To obtain the physical memory location of the read target, the read operation control unit 22 may first divide this intrablock offset by the number of granularities representing the page size (if the page size is 16 Kbytes and the granularity (Grain) is 4 Kbytes, the number of granularities representing the page size is 4), and then determine the quotient and remainder obtained by this division as the page number and intrapage offset of the read target, respectively.

GC動作制御部23は、NAND型フラッシュメモリ5のガベージコレクションのためのコピー元ブロック番号(GCソースブロック番号)およびコピー先ブロック番号(GCデスティネーションブロック番号)を指定するGC制御コマンドをホスト2から受信した場合、NAND型フラッシュメモリ5の複数のブロックから、指定されたコピー元ブロック番号を有するブロックと指定されたコピー先ブロック番号を有するブロックとをコピー元ブロック(GCソースブロック)およびコピー先ブロック(GCデスティネーションブロック)として選択する。GC動作制御部23は、選択されたGCソースブロックに格納されている有効データを書き込むべきGCデスティネーションブロック内のコピー先位置を決定し、有効データをGCデスティネーションブロック内のコピー先位置にコピーする。 When the GC operation control unit 23 receives from the host 2 a GC control command specifying a source block number (GC source block number) and a destination block number (GC destination block number) for garbage collection in the NAND flash memory 5, it selects a block having the specified source block number and a block having the specified destination block number as the source block (GC source block) and the destination block (GC destination block) from among the multiple blocks in the NAND flash memory 5. The GC operation control unit 23 determines a destination position in the GC destination block to which valid data stored in the selected GC source block should be written, and copies the valid data to the destination position in the GC destination block.

そして、GC動作制御部23は、有効データの論理アドレスと、コピー先ブロック番号と、GCデスティネーションブロック内のコピー先位置を示すブロック内物理アドレス(ブロック内オフセット)とを、ホスト2に通知する。 Then, the GC operation control unit 23 notifies the host 2 of the logical address of the valid data, the copy destination block number, and the physical address within the block (offset within the block) indicating the copy destination position within the GC destination block.

有効データ/無効データの管理は、ブロック管理テーブル32を使用して実行されてもよい。このブロック管理テーブル32は、例えば、ブロック毎に存在してもよい。あるブロックに対応するブロック管理テーブル32においては、このブロック内のデータそれぞれの有効/無効を示すビットマップフラグが格納されている。ここで、有効データとは、論理アドレスから最新のデータとして紐付けられているデータであって、後にホスト2からリードされる可能性があるデータを意味する。無効データとは、もはやホスト2からリードされる可能性が無いデータを意味する。例えば、ある論理アドレスに関連付けられているデータは有効データであり、どの論理アドレスにも関連付けられていないデータは無効データである。 Management of valid data/invalid data may be performed using a block management table 32. This block management table 32 may exist for each block, for example. In the block management table 32 corresponding to a certain block, a bitmap flag indicating whether each piece of data in this block is valid/invalid is stored. Here, valid data means data that is linked to a logical address as the latest data and has the potential to be read by the host 2 later. Invalid data means data that has no potential to be read by the host 2 any more. For example, data associated with a certain logical address is valid data, and data that is not associated with any logical address is invalid data.

上述したように、GC動作制御部23は、コピー元ブロック(GCソースブロック)内に格納されている有効データを書き込むべきコピー先ブロック(GCデスティネーションブロック)内の位置(コピー先位置)を決定し、有効データをコピー先ブロック(GCデスティネーションブロック)のこの決定された位置(コピー先位置)にコピーする。この場合、GC動作制御部23は、有効データとこの有効データの論理アドレスの双方を、コピー先ブロック(GCデスティネーションブロック)にコピーしてもよい。 As described above, the GC operation control unit 23 determines a position (destination position) in the destination block (GC destination block) to which valid data stored in the source block (GC source block) should be written, and copies the valid data to this determined position (destination position) in the destination block (GC destination block). In this case, the GC operation control unit 23 may copy both the valid data and the logical address of the valid data to the destination block (GC destination block).

本実施形態では、上述したように、ライト動作制御部21は、ホスト2からのデータ(ライトデータ)とホスト2からの論理アドレスの双方を書き込み先ブロックに書き込むことができる。このため、GC動作制御部23は、コピー元ブロック(GCソースブロック)内の各データの論理アドレスをこのコピー元ブロック(GCソースブロック)から容易に取得することができるので、コピーされた有効データの論理アドレスをホスト2に容易に通知することができる。 In this embodiment, as described above, the write operation control unit 21 can write both the data from the host 2 (write data) and the logical address from the host 2 to the destination block. Therefore, the GC operation control unit 23 can easily obtain the logical address of each piece of data in the source block (GC source block) from this source block (GC source block), and can easily notify the host 2 of the logical address of the copied valid data.

NANDインタフェース13は、CPU12の制御の下、NAND型フラッシュメモリ5を制御するように構成されたメモリ制御回路である。DRAMインタフェース14は、CPU12の制御の下、DRAM6を制御するように構成されたDRAM制御回路である。DRAM6の記憶領域の一部は、ライトバッファ(WB)31の格納のために使用される。また、DRAM6の記憶領域の他の一部は、ブロック管理テーブル32の格納のために使用される。なお、これらライトバッファ(WB)31、およびブロック管理テーブル32は、コントローラ4内の図示しないSRAMに格納されてもよい。 The NAND interface 13 is a memory control circuit configured to control the NAND flash memory 5 under the control of the CPU 12. The DRAM interface 14 is a DRAM control circuit configured to control the DRAM 6 under the control of the CPU 12. A part of the memory area of the DRAM 6 is used for storing a write buffer (WB) 31. Another part of the memory area of the DRAM 6 is used for storing a block management table 32. The write buffer (WB) 31 and the block management table 32 may be stored in an SRAM (not shown) in the controller 4.

図7は、ホスト2が論理アドレスとブロック番号とを指定し且つフラッシュストレージデバイス3がブロック内物理アドレス(ブロック内オフセット)を決定するデータ書き込み動作と、ホスト2がブロック番号とブロック内物理アドレス(ブロック内オフセット)とを指定するデータ読み出し動作とを示す。 Figure 7 shows a data write operation in which the host 2 specifies a logical address and a block number and the flash storage device 3 determines a physical address within the block (offset within the block), and a data read operation in which the host 2 specifies a block number and a physical address within the block (offset within the block).

データ書き込み動作は以下の手順で実行される。 The data write operation is performed as follows:

(1)ホスト2のライト処理部412がフラッシュストレージデバイス3にデータ(ライトデータ)を書き込むことが必要な時、ライト処理部412は、フリーブロックを割り当てるようにフラッシュストレージデバイス3に要求してもよい。フラッシュストレージデバイス3のコントローラ4は、NAND型フラッシュメモリ5のフリーブロック群を管理するブロック割り当て部701を含む。ブロック割り当て部701がライト処理部412からこの要求(ブロック割り当て要求)を受信した時、ブロック割り当て部701は、フリーブロック群の一つのフリーブロックをホスト2に割り当て、割り当てられたブロックのブロック番号(BLK#)をホスト2に通知する。 (1) When the write processing unit 412 of the host 2 needs to write data (write data) to the flash storage device 3, the write processing unit 412 may request the flash storage device 3 to allocate a free block. The controller 4 of the flash storage device 3 includes a block allocation unit 701 that manages the free block group of the NAND flash memory 5. When the block allocation unit 701 receives this request (block allocation request) from the write processing unit 412, the block allocation unit 701 allocates one free block from the free block group to the host 2 and notifies the host 2 of the block number (BLK#) of the allocated block.

あるいは、ライト処理部412がフリーブロック群を管理する構成においては、ライト処理部412が自身で書き込み先ブロックを選択してもよい。 Alternatively, in a configuration in which the write processing unit 412 manages the free block group, the write processing unit 412 may itself select the destination block to write to.

(2)ライト処理部412は、ライトデータに対応する論理アドレス(例えばLBA)と書き込み先ブロックのブロック番号(BLK#)とを指定するライト要求をフラッシュストレージデバイス3に送信する。 (2) The write processing unit 412 sends a write request to the flash storage device 3, specifying the logical address (e.g., LBA) corresponding to the write data and the block number (BLK#) of the destination block.

(3)フラッシュストレージデバイス3のコントローラ4は、データ書き込み用のページを割り当てるページ割り当て部702を含む。ページ割り当て部702がライト要求を受信した時、ページ割り当て部702は、ライト要求によって指定されたブロック番号を有するブロック(書き込み先ブロック)内の書き込み先位置を示すブロック内物理アドレス(ブロック内PBA)を決定する。ブロック内物理アドレス(ブロック内PBA)は、上述のブロック内オフセット(単にオフセットとしても参照される)によって表すことができる。コントローラ4は、ライト要求によって指定されたブロック番号と、ブロック内物理アドレス(ブロック内PBA)とに基づいて、ホスト2からのライトデータを、書き込み先ブロック内の書き込み先位置に書き込む。 (3) The controller 4 of the flash storage device 3 includes a page allocation unit 702 that allocates pages for writing data. When the page allocation unit 702 receives a write request, the page allocation unit 702 determines an intra-block physical address (intra-block PBA) that indicates a write destination position within a block (destination block) having a block number specified by the write request. The intra-block physical address (intra-block PBA) can be expressed by the intra-block offset (also simply referred to as an offset) described above. The controller 4 writes the write data from the host 2 to the write destination position within the destination block based on the block number and intra-block physical address (intra-block PBA) specified by the write request.

(4)コントローラ4は、書き込み先位置を示すブロック内物理アドレス(ブロック内PBA)をライト要求に対するレスポンスとしてホスト2に通知する。あるいは、コントローラ4は、ライトデータに対応する論理アドレス(LBA)と、書き込み先ブロックのブロック番号(BLK#)と、書き込み先位置を示すブロック内PBA(オフセット)との組を、ライト要求に対するレスポンスとしてホスト2に通知してもよい。換言すれば、コントローラは、ブロック内物理アドレス、または論理アドレスとブロック番号とブロック内物理アドレスとの組のいずれかを、ホスト2に通知する。ホスト2においては、ライトデータが書き込まれた物理記憶位置を示す物理アドレス(ブロック番号、ブロック内物理アドレス(ブロック内オフセット))が、このライトデータの論理アドレスにマッピングされるように、LUT411が更新される。 (4) The controller 4 notifies the host 2 of the in-block physical address (in-block PBA) indicating the write destination location as a response to the write request. Alternatively, the controller 4 may notify the host 2 of a set of the logical address (LBA) corresponding to the write data, the block number (BLK#) of the write destination block, and the in-block PBA (offset) indicating the write destination location as a response to the write request. In other words, the controller notifies the host 2 of either the in-block physical address or a set of the logical address, block number, and in-block physical address. In the host 2, the LUT 411 is updated so that the physical address (block number, in-block physical address (in-block offset)) indicating the physical memory location where the write data is written is mapped to the logical address of this write data.

データリード動作は以下の手順で実行される。 The data read operation is performed as follows:

(1)’ホスト2がフラッシュストレージデバイス3からデータをリードすることが必要な時、ホスト2は、LUT411を参照して、リードすべきデータの論理アドレスに対応する物理アドレス(ブロック番号、ブロック内物理アドレス(ブロック内オフセット))をLUT411から取得する。 (1)'When the host 2 needs to read data from the flash storage device 3, the host 2 refers to the LUT 411 and obtains from the LUT 411 the physical address (block number, physical address within the block (offset within the block)) that corresponds to the logical address of the data to be read.

(2)’ホスト2は、取得されたブロック番号およびブロック内物理アドレス(ブロック内オフセット)を指定するリード要求をフラッシュストレージデバイス3に送出する。フラッシュストレージデバイス3のコントローラ4がこのリード要求をホスト2から受信した時、コントローラ4は、ブロック番号およびブロック内物理アドレスに基づいて、リード対象のブロックおよびリード対象の物理記憶位置を特定し、このリード対象のブロック内のリード対象の物理記憶位置からデータをリードする。 (2)' The host 2 sends a read request to the flash storage device 3, specifying the obtained block number and physical address within the block (offset within the block). When the controller 4 of the flash storage device 3 receives this read request from the host 2, the controller 4 identifies the block to be read and the physical memory location of the read target based on the block number and the physical address within the block, and reads data from the physical memory location of the read target within the block to be read.

図8は、フラッシュストレージデバイス3に適用されるライトコマンドを示す。 Figure 8 shows a write command applied to flash storage device 3.

ライトコマンドは、フラッシュストレージデバイス3にデータの書き込みを要求するコマンドである。このライトコマンドは、コマンドID、ブロック番号BLK#、論理アドレス、長さ、等を含んでもよい。 The write command is a command that requests writing data to the flash storage device 3. This write command may include a command ID, a block number BLK#, a logical address, a length, etc.

コマンドIDはこのコマンドがライトコマンドであることを示すID(コマンドコード)であり、ライトコマンドにはライトコマンド用のコマンドIDが含まれる。 The command ID is an ID (command code) that indicates that this command is a write command, and the write command includes a command ID for the write command.

ブロック番号BLK#は、データが書き込まれるべきブロックを一意に識別可能な識別子(ブロックアドレス)である。 The block number BLK# is an identifier (block address) that uniquely identifies the block to which data should be written.

論理アドレスは、書き込まれるべきライトデータを識別するための識別子である。この論理アドレスは、上述したように、LBAであってもよいし、キー・バリュー・ストアのキーであってもよいし、キーのハッシュ値であってもよい。論理アドレスがLBAである場合には、このライトコマンドに含まれる論理アドレス(開始LBA)は、ライトデータが書き込まれるべき論理位置(最初の論理位置)を示す。 The logical address is an identifier for identifying the write data to be written. As described above, this logical address may be an LBA, a key in a key-value store, or a hash value of the key. If the logical address is an LBA, the logical address (start LBA) included in the write command indicates the logical location (first logical location) where the write data should be written.

長さは、書き込まれるべきライトデータの長さを示す。この長さ(データ長)は、粒度(Grain)の数によって指定されてもよいし、LBAの数によって指定されてもよいし、あるいはそのサイズがバイトによって指定されてもよい。 The length indicates the length of the write data to be written. This length (data length) may be specified by the number of grains, the number of LBAs, or the size may be specified by bytes.

ホスト2からライトコマンドを受信した時、コントローラ4は、ライトコマンドによって指定されたブロック番号を有するブロック内の書き込み先位置を決定する。この書き込み先位置は、ページ書き込み順序の制約およびバッドページ等を考慮して決定される。そして、コントローラ4は、ホスト2からのデータを、ライトコマンドによって指定されたブロック番号を有するこのブロック内のこの書き込み先位置に書き込む。 When a write command is received from the host 2, the controller 4 determines the write destination location within the block having the block number specified by the write command. This write destination location is determined taking into consideration page write order constraints and bad pages, etc. Then, the controller 4 writes the data from the host 2 to this write destination location within the block having the block number specified by the write command.

図9は、図8のライトコマンドに対するレスポンスを示す。 Figure 9 shows the response to the write command in Figure 8.

このレスポンスは、ブロック内物理アドレス、長さを含む。ブロック内物理アドレスは、データが書き込まれたブロック内の位置(物理記憶位置)を示す。ブロック内物理アドレスは、上述したように、ブロック内オフセットによって指定可能である。長さは、書き込まれたデータの長さを示す。この長さ(データ長)は、粒度(Grain)の数によって指定されてもよいし、LBAの数によって指定されてもよいし、あるいはそのサイズがバイトによって指定されてもよい。 This response includes the physical address within the block and the length. The physical address within the block indicates the location (physical memory location) within the block where the data was written. The physical address within the block can be specified by the offset within the block, as described above. The length indicates the length of the written data. This length (data length) may be specified by the number of grains, the number of LBAs, or the size may be specified by bytes.

あるいは、このレスポンスは、ブロック内物理アドレスおよび長さだけでなく、論理アドレスおよびブロック番号をさらに含んでいてもよい。論理アドレスは、図8のライトコマンドに含まれていた論理アドレスである。ブロック番号は、図8のライトコマンドに含まれていた論理アドレスである。 Alternatively, this response may further include a logical address and a block number in addition to the physical address and length within the block. The logical address is the logical address included in the write command in FIG. 8. The block number is the logical address included in the write command in FIG. 8.

図10は、フラッシュストレージデバイス3に適用されるTrimコマンドを示す。 Figure 10 shows the Trim command applied to flash storage device 3.

このTrimコマンドは、無効にすべきデータが格納されている物理記憶位置を示すブロック番号およびブロック内物理アドレス(ブロック内オフセット)を含むコマンドである。つまり、このTrimコマンドは、LBAのような論理アドレスではなく、物理アドレスを指定可能である。このTrimコマンドは、コマンドID、物理アドレス、長さを含む。 This Trim command includes a block number and a physical address within the block (offset within the block) that indicate the physical memory location where the data to be invalidated is stored. In other words, this Trim command can specify a physical address rather than a logical address such as an LBA. This Trim command includes a command ID, a physical address, and a length.

コマンドIDはこのコマンドがTrimコマンドであることを示すID(コマンドコード)であり、TrimコマンドにはTrimコマンド用のコマンドIDが含まれる。 The command ID is an ID (command code) that indicates that this command is a Trim command, and the Trim command includes a command ID for the Trim command.

物理アドレスは、無効化すべきデータが格納されている最初の物理記憶位置を示す。本実施形態では、この物理アドレスは、ブロック番号とオフセット(ブロック内オフセット)との組み合わせによって指定される。 The physical address indicates the first physical memory location where the data to be invalidated is stored. In this embodiment, this physical address is specified by a combination of a block number and an offset (offset within the block).

長さは、無効化すべきデータの長さを示す。この長さ(データ長)は、粒度(Grain)の数によって指定されてもよいし、バイトによって指定されてもよい。 The length indicates the length of the data to be invalidated. This length (data length) may be specified by the number of grains or by bytes.

コントローラ4は、複数のブロックの各々に含まれるデータそれぞれの有効/無効を示すフラグ(ビットマップフラグ)をブロック管理テーブル32を使用して管理する。無効にすべきデータが格納されている物理記憶位置を示すブロック番号およびオフセット(ブロック内オフセット)を含むTrimコマンドをホスト2から受信した場合、コントローラ4は、ブロック管理テーブル32を更新して、Trimコマンドに含まれるブロック番号およびブロック内オフセットに対応する物理記憶位置のデータに対応するフラグ(ビットマップフラグ)を無効を示す値に変更する。 The controller 4 manages flags (bitmap flags) indicating the validity/invalidity of each piece of data contained in each of the multiple blocks using the block management table 32. When a Trim command including a block number and offset (offset within block) indicating the physical storage location where the data to be invalidated is stored is received from the host 2, the controller 4 updates the block management table 32 and changes the flag (bitmap flag) corresponding to the data at the physical storage location corresponding to the block number and offset within block included in the Trim command to a value indicating invalidity.

図11は、ブロック内物理アドレスを規定するブロック内オフセットを示す。 Figure 11 shows the offset within a block that defines the physical address within the block.

ブロック番号はある一つのブロックBLKを指定する。各ブロックBLKは、図11に示されているように、複数のページ(ここでは、ページ0~ページn)を含む。 The block number specifies a block BLK. Each block BLK contains multiple pages (here, page 0 to page n), as shown in Figure 11.

ページサイズ(各ページのユーザデータ格納領域)が16Kバイトであり、粒度(Grain)が4KBのサイズであるケースにおいては、このブロックBLKは、4×(n+1)個の領域に論理的に分割される。 When the page size (user data storage area of each page) is 16 KB and the granularity is 4 KB, this block BLK is logically divided into 4 x (n + 1) areas.

オフセット+0はページ0の最初の4KB領域を示し、オフセット+1はページ0の2番目の4KB領域を示し、オフセット+2はページ0の3番目の4KB領域を示し、オフセット+3はページ0の4番目の4KB領域を示す。 Offset +0 points to the first 4KB area of page 0, offset +1 points to the second 4KB area of page 0, offset +2 points to the third 4KB area of page 0, and offset +3 points to the fourth 4KB area of page 0.

オフセット+4はページ1の最初の4KB領域を示し、オフセット+5はページ1の2番目の4KB領域を示し、オフセット+6はページ1の3番目の4KB領域を示し、オフセット+7はページ1の4番目の4KB領域を示す。 Offset +4 points to the first 4KB area on page 1, offset +5 points to the second 4KB area on page 1, offset +6 points to the third 4KB area on page 1, and offset +7 points to the fourth 4KB area on page 1.

図12は、ライトコマンドに応じて実行される書き込み動作を示す。 Figure 12 shows the write operation performed in response to a write command.

いま、ブロックBLK#1が書き込み先ブロックとして割り当てられている場合を想定する。コントローラ4は、ページ0、ページ1、ページ2、…ページnという順序で、データをページ単位でブロックBLK#1に書き込む。 Now, assume that block BLK#1 is assigned as the write destination block. The controller 4 writes data to block BLK#1 in units of pages in the order of page 0, page 1, page 2, ..., page n.

図11においては、ブロックBLK#1のページ0に16Kバイト分のデータがすでに書き込まれている状態で、ブロック番号(=BLK#1)、論理アドレス(LBAx)および長さ(=4)を指定するライトコマンドがホスト2から受信された場合が想定されている。コントローラ4は、ブロックBLK#1のページ1を書き込み先位置として決定し、ホスト2から受信される16Kバイト分のライトデータをブロックBLK#1のページ1に書き込む。そして、コントローラ4は、このライトコマンドに対するレスポンスとして、オフセット(ブロック内オフセット)、長さをホスト2に返す。このケースにおいては、オフセット(ブロック内オフセット)は+5であり、長さは4である。あるいは、コントローラ4は、このライトコマンドに対するレスポンスとして、論理アドレス、ブロック番号、オフセット(ブロック内オフセット)、長さをホスト2に返してもよい。このケースにおいては、論理アドレスはLBAxであり、ブロック番号はBLK#1であり、オフセット(ブロック内オフセット)は+5であり、長さは4である。 In FIG. 11, it is assumed that a write command specifying the block number (=BLK#1), logical address (LBAx), and length (=4) is received from the host 2 when 16K bytes of data have already been written to page 0 of block BLK#1. The controller 4 determines page 1 of block BLK#1 as the write destination location, and writes the 16K bytes of write data received from the host 2 to page 1 of block BLK#1. The controller 4 then returns the offset (offset within block) and length to the host 2 as a response to this write command. In this case, the offset (offset within block) is +5, and the length is 4. Alternatively, the controller 4 may return the logical address, block number, offset (offset within block), and length to the host 2 as a response to this write command. In this case, the logical address is LBAx, the block number is BLK#1, the offset (offset within block) is +5, and the length is 4.

図13は、不良ページ(バッドページ)をスキップする書き込み動作を示す。 Figure 13 shows a write operation that skips a bad page.

図13においては、ブロックBLK#1のページ0、ページ1にデータがすでに書き込まれている状態で、ブロック番号(=BLK#1)、論理アドレス(LBAx+1)および長さ(=4)を指定するライトコマンドがホスト2から受信された場合が想定されている。もしブロックBLK#1のページ2が不良ページであるならば、コントローラ4は、ブロックBLK#1のページ3を書き込み先位置として決定し、ホスト2から受信される16Kバイト分のライトデータをブロックBLK#1のページ3に書き込む。そして、コントローラ4は、このライトコマンドに対するレスポンスとして、オフセット(ブロック内オフセット)、長さをホスト2に返す。このケースにおいては、オフセット(ブロック内オフセット)は+12であり、長さは4である。あるいは、コントローラ4は、このライトコマンドに対するレスポンスとして、論理アドレス、ブロック番号、オフセット(ブロック内オフセット)、長さをホスト2に返してもよい。このケースにおいては、論理アドレスはLBAx+1であり、ブロック番号はBLK#1であり、オフセット(ブロック内オフセット)は+12であり、長さは4である。 In FIG. 13, it is assumed that a write command specifying the block number (=BLK#1), logical address (LBAx+1), and length (=4) is received from the host 2 when data has already been written to page 0 and page 1 of block BLK#1. If page 2 of block BLK#1 is a defective page, the controller 4 determines page 3 of block BLK#1 as the write destination location and writes 16K bytes of write data received from the host 2 to page 3 of block BLK#1. The controller 4 then returns the offset (offset within block) and length to the host 2 as a response to this write command. In this case, the offset (offset within block) is +12 and the length is 4. Alternatively, the controller 4 may return the logical address, block number, offset (offset within block), and length to the host 2 as a response to this write command. In this case, the logical address is LBAx+1, the block number is BLK#1, the offset (offset within block) is +12, and the length is 4.

図14は、不良ページをスキップする書き込み動作の別の例を示す。 Figure 14 shows another example of a write operation that skips a bad page.

図14においては、不良ページを挟む2つのページに跨がってデータが書き込まれる場合が想定されている。いま、ブロックBLK#2のページ0、ページ1にデータがすでに書き込まれており、且つライトバッファ31に未書き込みの8Kバイト分のライトデータが残っている場合を想定する。この状態で、ブロック番号(=BLK#2)、論理アドレス(LBAy)および長さ(=6)を指定するライトコマンドが受信されたならば、コントローラ4は、未書き込みの8Kバイトライトデータと、ホスト2から新たに受信される24Kバイトライトデータ内の最初の8Kバイトライトデータとを使用して、ページサイズに対応する16Kバイトライトデータを準備する。そして、コントローラ4は、この準備した16KバイトライトデータをブロックBLK#2のページ2に書き込む。 In FIG. 14, it is assumed that data is written across two pages, one of which is a defective page. Assume that data has already been written to page 0 and page 1 of block BLK#2, and that 8 KB of unwritten write data remains in the write buffer 31. In this state, if a write command specifying the block number (=BLK#2), logical address (LBAy), and length (=6) is received, the controller 4 uses the unwritten 8 KB of write data and the first 8 KB of write data in the 24 KB of write data newly received from the host 2 to prepare 16 KB of write data corresponding to the page size. The controller 4 then writes this prepared 16 KB of write data to page 2 of block BLK#2.

もしブロックBLK#2の次のページ3が不良ページであるならば、コントローラ4は、ブロックBLK#2のページ4を次の書き込み先位置として決定し、ホスト2から受信された24Kバイトライトデータ内の残りの16Kバイトライトデータを、ブロックBLK#2のページ4に書き込む。 If the next page 3 of block BLK#2 is a defective page, the controller 4 determines page 4 of block BLK#2 as the next write location, and writes the remaining 16 KB of write data in the 24 KB of write data received from the host 2 to page 4 of block BLK#2.

そして、コントローラ4は、このライトコマンドに対するレスポンスとして、2つのオフセット(ブロック内オフセット)と、2つの長さをホスト2に返す。このケースにおいては、このレスポンスは、オフセット(=+10)、長さ(=2)、オフセット(=+16)、長さ(=4)を含んでもよい。あるいは、コントローラ4は、このライトコマンドに対するレスポンスとして、LBAy、ブロック番号(=BLK#2)、オフセット(=+10)、長さ(=2)、ブロック番号(=BLK#2)、オフセット(=+16)、長さ(=4)をホスト2に返してもよい。 The controller 4 then returns two offsets (offsets within a block) and two lengths to the host 2 as a response to this write command. In this case, this response may include offset (=+10), length (=2), offset (=+16), and length (=4). Alternatively, the controller 4 may return LBAy, block number (=BLK#2), offset (=+10), length (=2), block number (=BLK#2), offset (=+16), and length (=4) to the host 2 as a response to this write command.

図15、図16は、論理アドレスとデータのペアをブロック内のページに書き込む動作を示す。 Figures 15 and 16 show the operation of writing a logical address and data pair to a page in a block.

各ブロックにおいて、各ページは、ユーザデータを格納するためのユーザデータ領域と管理データを格納するための冗長領域とを含んでもよい。ページサイズは16KB+アルファである。 In each block, each page may include a user data area for storing user data and a redundant area for storing management data. The page size is 16KB+alpha.

コントローラ4は、4KBユーザデータとこの4KBユーザデータに対応する論理アドレス(例えばLBA)との双方を書き込み先ブロックBLKに書き込む。この場合、図15に示すように、各々がLBAと4KBユーザデータとを含む4つのデータセットが同じページに書き込まれてもよい。ブロック内オフセットは、セット境界を示してもよい。 The controller 4 writes both the 4 KB user data and the logical address (e.g., LBA) corresponding to the 4 KB user data to the destination block BLK. In this case, as shown in FIG. 15, four data sets, each including an LBA and 4 KB user data, may be written to the same page. The offset within the block may indicate a set boundary.

あるいは、図16に示されているように、4つの4KBユーザデータがページ内のユーザデータ領域に書き込まれ、これら4つの4KBユーザデータに対応する4つのLBAがこのページ内の冗長領域に書き込まれてもよい。 Alternatively, as shown in FIG. 16, four 4 KB user data may be written to the user data area in a page, and four LBAs corresponding to these four 4 KB user data may be written to the redundant area in the page.

図17は、スーパーブロックが使用されるケースにおけるブロック番号とオフセット(ブロック内オフセット)との関係を示す。以下では、ブロック内オフセットは単にオフセットとしても参照される。 Figure 17 shows the relationship between block number and offset (offset within block) when superblocks are used. In the following, offset within block is also referred to simply as offset.

ここでは、図示を簡単化するために、ある一つのスーパーブロックSB#1が4つのブロックBLK#11、BLK#21、BLK#31、BLK#41から構成されている場合が想定されている。コントローラ4は、ブロックBLK#11のページ0、ブロックBLK#21のページ0、ブロックBLK#31のページ0、ブロックBLK#41のページ0、ブロックBLK#11のページ1、ブロックBLK#21のページ1、ブロックBLK#31のページ1、ブロックBLK#41のページ1、…という順序でデータを書き込む。 To simplify the illustration, it is assumed here that one superblock SB#1 is made up of four blocks BLK#11, BLK#21, BLK#31, and BLK#41. The controller 4 writes data in the following order: page 0 of block BLK#11, page 0 of block BLK#21, page 0 of block BLK#31, page 0 of block BLK#41, page 1 of block BLK#11, page 1 of block BLK#21, page 1 of block BLK#31, page 1 of block BLK#41, and so on.

オフセット+0はブロックBLK#11のページ0の最初の4KB領域を示し、オフセット+1はブロックBLK#11のページ0の2番目の4KB領域を示し、オフセット+2はブロックBLK#11のページ0の3番目の4KB領域を示し、オフセット+3はブロックBLK#11のページ0の4番目の4KB領域を示す。 Offset +0 indicates the first 4KB area of page 0 of block BLK#11, offset +1 indicates the second 4KB area of page 0 of block BLK#11, offset +2 indicates the third 4KB area of page 0 of block BLK#11, and offset +3 indicates the fourth 4KB area of page 0 of block BLK#11.

オフセット+4はブロックBLK#21のページ0の最初の4KB領域を示し、オフセット+5はブロックBLK#21のページ0の2番目の4KB領域を示し、オフセット+6はブロックBLK#21のページ0の3番目の4KB領域を示し、オフセット+7はブロックBLK#21のページ0の4番目の4KB領域を示す。 Offset +4 indicates the first 4KB area of page 0 of block BLK#21, offset +5 indicates the second 4KB area of page 0 of block BLK#21, offset +6 indicates the third 4KB area of page 0 of block BLK#21, and offset +7 indicates the fourth 4KB area of page 0 of block BLK#21.

同様に、オフセット+12はブロックBLK#41のページ0の最初の4KB領域を示し、オフセット+13はブロックBLK#41のページ0の2番目の4KB領域を示し、オフセット+14はブロックBLK#41のページ0の3番目の4KB領域を示し、オフセット+15はブロックBLK#41のページ0の4番目の4KB領域を示す。 Similarly, offset +12 points to the first 4KB area of page 0 of block BLK#41, offset +13 points to the second 4KB area of page 0 of block BLK#41, offset +14 points to the third 4KB area of page 0 of block BLK#41, and offset +15 points to the fourth 4KB area of page 0 of block BLK#41.

オフセット+16はブロックBLK#11のページ1の最初の4KB領域を示し、オフセット+17はブロックBLK#11のページ1の2番目の4KB領域を示し、オフセット+18はブロックBLK#11のページ1の3番目の4KB領域を示し、オフセット+19はブロックBLK#11のページ1の4番目の4KB領域を示す。 Offset +16 indicates the first 4KB area of page 1 of block BLK#11, offset +17 indicates the second 4KB area of page 1 of block BLK#11, offset +18 indicates the third 4KB area of page 1 of block BLK#11, and offset +19 indicates the fourth 4KB area of page 1 of block BLK#11.

オフセット+20はブロックBLK#21のページ1の最初の4KB領域を示し、オフセット+21はブロックBLK#21のページ1の2番目の4KB領域を示し、オフセット+22はブロックBLK#21のページ1の3番目の4KB領域を示し、オフセット+23はブロックBLK#21のページ1の4番目の4KB領域を示す。 Offset +20 indicates the first 4KB area of page 1 of block BLK#21, offset +21 indicates the second 4KB area of page 1 of block BLK#21, offset +22 indicates the third 4KB area of page 1 of block BLK#21, and offset +23 indicates the fourth 4KB area of page 1 of block BLK#21.

同様に、オフセット+28はブロックBLK#41のページ1の最初の4KB領域を示し、オフセット+29はブロックBLK#41のページ1の2番目の4KB領域を示し、オフセット+30はブロックBLK#41のページ1の3番目の4KB領域を示し、オフセット+31はブロックBLK#41のページ1の4番目の4KB領域を示す。 Similarly, offset +28 indicates the first 4KB region of page 1 of block BLK#41, offset +29 indicates the second 4KB region of page 1 of block BLK#41, offset +30 indicates the third 4KB region of page 1 of block BLK#41, and offset +31 indicates the fourth 4KB region of page 1 of block BLK#41.

図18は、フラッシュストレージデバイス3に適用される最大ブロック番号ゲットコマンドを示す。 Figure 18 shows a get maximum block number command applied to flash storage device 3.

最大ブロック番号ゲットコマンドは、フラッシュストレージデバイス3から最大ブロック番号を取得するためのコマンドである。ホスト2は、フラッシュストレージデバイス3に最大ブロック番号ゲットコマンドに送信することにより、フラッシュストレージデバイス3に含まれるブロックの数を示す最大ブロック番号を認識することができる。最大ブロック番号ゲットコマンドは、最大ブロック番号ゲットコマンド用のコマンドIDを含み、パラメータは含まない。 The get maximum block number command is a command for obtaining the maximum block number from the flash storage device 3. The host 2 can recognize the maximum block number indicating the number of blocks contained in the flash storage device 3 by sending the get maximum block number command to the flash storage device 3. The get maximum block number command includes a command ID for the get maximum block number command, but does not include any parameters.

図19は、最大ブロック番号ゲットコマンドに対するレスポンスを示す。 Figure 19 shows the response to the Get Maximum Block Number command.

最大ブロック番号ゲットコマンドをホスト2から受信した時、フラッシュストレージデバイス3は、図19に示すレスポンスをホスト2に返す。このレスポンスは、最大ブロック番号(つまり、フラッシュストレージデバイス3に含まれる利用可能なブロックの総数)を示すパラメータを含む。 When the flash storage device 3 receives the maximum block number get command from the host 2, it returns the response shown in FIG. 19 to the host 2. This response includes a parameter indicating the maximum block number (i.e., the total number of available blocks contained in the flash storage device 3).

図20は、フラッシュストレージデバイス3に適用されるブロックサイズゲットコマンドを示す。 Figure 20 shows a get block size command applied to flash storage device 3.

ブロックサイズゲットコマンドは、フラッシュストレージデバイス3からブロックサイズを取得するためのコマンドである。ホスト2は、フラッシュストレージデバイス3にブロックサイズゲットコマンドに送信することにより、フラッシュストレージデバイス3に含まれるNAND型フラッシュメモリ5のブロックサイズを認識することができる。 The get block size command is a command for obtaining the block size from the flash storage device 3. By sending a get block size command to the flash storage device 3, the host 2 can recognize the block size of the NAND flash memory 5 included in the flash storage device 3.

なお、別の実施形態では、ブロックサイズゲットコマンドは、ブロック番号を指定するパラメータを含んでいてもよい。あるブロック番号を指定するブロックサイズゲットコマンドをホスト2から受信した場合、フラッシュストレージデバイス3は、このブロック番号を有するブロックのブロックサイズをホスト2に返す。これにより、たとえNAND型フラッシュメモリ5に含まれるブロックそれぞれのブロックサイズが不均一である場合であっても、ホスト2は、個々のブロックそれぞれのブロックサイズを認識することができる。 In another embodiment, the get block size command may include a parameter that specifies a block number. When the flash storage device 3 receives a get block size command that specifies a block number from the host 2, the flash storage device 3 returns the block size of the block having this block number to the host 2. This allows the host 2 to recognize the block size of each individual block, even if the block sizes of the blocks included in the NAND flash memory 5 are not uniform.

図21は、ブロックサイズゲットコマンドに対するレスポンスを示す。 Figure 21 shows the response to the get block size command.

ブロックサイズゲットコマンドをホスト2から受信した時、フラッシュストレージデバイス3は、ブロックサイズ(NAND型フラッシュメモリ5に含まれるブロックそれぞれの共通のブロックサイズ)をホスト2に返す。この場合、もしブロック番号がブロックサイズゲットコマンドによって指定されていたならば、フラッシュストレージデバイス3は、上述したように、このブロック番号を有するブロックのブロックサイズをホスト2に返す。 When the flash storage device 3 receives a get block size command from the host 2, it returns the block size (the common block size for each block included in the NAND flash memory 5) to the host 2. In this case, if a block number is specified by the get block size command, the flash storage device 3 returns the block size of the block having this block number to the host 2, as described above.

図22は、フラッシュストレージデバイス3に適用されるブロックアロケートコマンドを示す。 Figure 22 shows a block allocate command applied to flash storage device 3.

ブロックアロケートコマンドは、フラッシュストレージデバイス3にブロック(フリーブロック)の割り当てを要求するコマンド(ブロック割り当て要求)である。ホスト2は、ブロックアロケートコマンドをフラッシュストレージデバイス3に送信することによって、フリーブロックを割り当てるようにフラッシュストレージデバイス3に要求し、これによってブロック番号(割り当てられたフリーブロックのブロック番号)を取得することができる。 The block allocate command is a command (block allocation request) that requests the flash storage device 3 to allocate a block (free block). By sending a block allocate command to the flash storage device 3, the host 2 requests the flash storage device 3 to allocate a free block, and is thereby able to obtain the block number (the block number of the allocated free block).

フラッシュストレージデバイス3がフリーブロック群をフリーブロックリストによって管理し、ホスト2はフリーブロック群を管理しないケースにおいては、ホスト2は、フリーブロックを割り当てるようにフラッシュストレージデバイス3に要求し、これによってブロック番号を取得する。一方、ホスト2がフリーブロック群を管理するケースにおいては、ホスト2は、フリーブロック群の一つを自身で選択することができるので、ブロックアロケートコマンドをフラッシュストレージデバイス3に送信する必要は無い。 In cases where the flash storage device 3 manages the free blocks using a free block list and the host 2 does not manage the free blocks, the host 2 requests the flash storage device 3 to allocate a free block, thereby obtaining a block number. On the other hand, in cases where the host 2 manages the free blocks, the host 2 can select one of the free blocks by itself, and therefore does not need to send a block allocate command to the flash storage device 3.

図23は、ブロックアロケートコマンドに対するレスポンスを示す。 Figure 23 shows the response to a block allocate command.

ブロックアロケートコマンドをホスト2から受信した時、フラッシュストレージデバイス3は、フリーブロックリストから、ホスト2に割り当てるべきフリーブロックを選択し、選択したフリーブロックのブロック番号を含むレスポンスをホスト2に返す。 When a block allocate command is received from the host 2, the flash storage device 3 selects a free block to be allocated to the host 2 from the free block list, and returns a response including the block number of the selected free block to the host 2.

図24は、ホスト2とフラッシュストレージデバイス3とによって実行されるブロック情報取得処理を示す。 Figure 24 shows the block information acquisition process executed by the host 2 and the flash storage device 3.

ホスト2がフラッシュストレージデバイス3の使用を開始する時、ホスト2は、まず、最大ブロック番号ゲットコマンドをフラッシュストレージデバイス3に送信する。フラッシュストレージデバイス3のコントローラは、最大ブロック番号をホスト2に返す。最大ブロック番号は、利用可能なブロックの総数を示す。なお、上述のスーパーブロックが使用されるケースにおいては、最大ブロック番号は、利用可能なスーパーブロックの総数を示してもよい。 When the host 2 starts using the flash storage device 3, the host 2 first sends a get maximum block number command to the flash storage device 3. The controller of the flash storage device 3 returns the maximum block number to the host 2. The maximum block number indicates the total number of available blocks. Note that in cases where the above-mentioned super blocks are used, the maximum block number may also indicate the total number of available super blocks.

次いで、ホスト2は、ブロックサイズゲットコマンドをフラッシュストレージデバイス3に送信して、ブロックサイズを取得する。この場合、ホスト2は、ブロック番号1を指定するブロックサイズゲットコマンド、ブロック番号2を指定するブロックサイズゲットコマンド、ブロック番号3を指定するブロックサイズゲットコマンド、…をフラッシュストレージデバイス3にそれぞれ送信して、全てのブロックそれぞれのブロックサイズを個別に取得してもよい。 Then, the host 2 sends a get block size command to the flash storage device 3 to obtain the block size. In this case, the host 2 may send a get block size command specifying block number 1, a get block size command specifying block number 2, a get block size command specifying block number 3, ... to the flash storage device 3 to obtain the block size of each of all blocks individually.

このブロック情報取得処理により、ホスト2は、利用可能ブロック数、個々のブロックのブロックサイズを認識することができる。 This block information acquisition process allows host 2 to recognize the number of available blocks and the block size of each block.

図25は、ホスト2とフラッシュストレージデバイス3とによって実行される書き込み処理のシーケンスを示す。 Figure 25 shows the sequence of a write process performed by the host 2 and the flash storage device 3.

ホスト2は、まず、書き込みのために使用すべきブロック(フリーブロック)を自身で選択するか、またはブロックアロケートコマンドをフラッシュストレージデバイス3に送信することによってフリーブロックを割り当てるようにフラッシュストレージデバイス3に要求する。そして、ホスト2は、自身で選択したブロックのブロック番号BLK#(またはフラッシュストレージデバイス3によって割り当てられたフリーブロックのブロック番号BLK#)と、論理アドレス(LBA)と、長さとを含むライトコマンドをフラッシュストレージデバイス3に送信する(ステップS20)。 The host 2 first selects a block (free block) to be used for writing, or requests the flash storage device 3 to allocate a free block by sending a block allocate command to the flash storage device 3. The host 2 then sends a write command to the flash storage device 3, including the block number BLK# of the block selected by the host 2 (or the block number BLK# of a free block allocated by the flash storage device 3), the logical address (LBA), and the length (step S20).

フラッシュストレージデバイス3のコントローラ4がこのライトコマンドを受信した時、コントローラ4は、ホスト2からのライトデータを書き込むべき、このブロック番号BLK#を有するブロック(書き込み先ブロックBLK#)内の書き込み先位置を決定し、この書き込み先ブロックBLK#の書き込み先位置にライトデータを書き込む(ステップS11)。ステップS11では、コントローラ4は、論理アドレス(ここではLBA)とライトデータの双方を書き込み先ブロックに書き込んでもよい。 When the controller 4 of the flash storage device 3 receives this write command, the controller 4 determines the destination position within the block having this block number BLK# (destination block BLK#) to which the write data from the host 2 should be written, and writes the write data to the destination position of the destination block BLK# (step S11). In step S11, the controller 4 may write both the logical address (here, LBA) and the write data to the destination block.

コントローラ4は、書き込み先ブロックBLK#に対応するブロック管理テーブル32を更新して、書き込まれたデータに対応するビットマップフラグ(つまり、このデータが書き込まれたオフセット(ブロック内オフセット)に対応するビットマップフラグ)を0から1に変更する(ステップS12)。 The controller 4 updates the block management table 32 corresponding to the destination block BLK#, and changes the bitmap flag corresponding to the written data (i.e., the bitmap flag corresponding to the offset (offset within the block) at which this data was written) from 0 to 1 (step S12).

例えば、図26に示されているように、開始LBAがLBAxである16Kバイト更新データがブロックBLK#1のオフセット+4~+7に対応する物理記憶位置に書き込まれた場合を想定する。この場合、図27に示されているように、ブロックBLK#1用のブロック管理テーブルにおいては、オフセット+4~+7に対応するビットマップフラグそれぞれが0から1に変更される。 For example, as shown in Figure 26, assume that 16K byte update data with a starting LBA of LBAx is written to the physical memory location corresponding to offsets +4 to +7 of block BLK#1. In this case, as shown in Figure 27, in the block management table for block BLK#1, each of the bitmap flags corresponding to offsets +4 to +7 is changed from 0 to 1.

そして、図25に示すように、コントローラ4は、このライトコマンドに対するレスポンスをホスト2に返す(ステップS13)。このレスポンスは、このデータが書き込まれたオフセット(ブロック内オフセット)を少なくとも含む。 Then, as shown in FIG. 25, the controller 4 returns a response to this write command to the host 2 (step S13). This response includes at least the offset (offset within the block) to which this data was written.

ホスト2がこのレスポンスを受信した時、ホスト2は、ホスト2によって管理されているLUT411を更新して、書き込まれたライトデータに対応する論理アドレスそれぞれに物理アドレスをマッピングする。図28に示されているように、LUT411は、複数の論理アドレス(例えばLBA)それぞれに対応する複数のエントリを含む。ある論理アドレス(例えばあるLBA)に対応するエントリには、このLBAに対応するデータが格納されているNAND型フラッシュメモリ5内の位置(物理記憶位置)を示す物理アドレスPBA、つまりブロック番号、オフセット(ブロック内オフセット)が格納される。図26に示されているように、開始LBAがLBAxである16Kバイト更新データがブロックBLK#1のオフセット+4~+7に対応する物理記憶位置に書き込まれたならば、図28に示されているように、LUT411が更新されて、LBAxに対応するエントリにBLK#1、オフセット+4が格納され、LBAx+1に対応するエントリにBLK#1、オフセット+5が格納され、LBAx+2に対応するエントリにBLK#1、オフセット+6が格納され、LBAx+3に対応するエントリにBLK#1、オフセット+7が格納される。 When the host 2 receives this response, the host 2 updates the LUT 411 managed by the host 2 and maps a physical address to each logical address corresponding to the written write data. As shown in FIG. 28, the LUT 411 includes multiple entries corresponding to multiple logical addresses (e.g., LBAs). An entry corresponding to a certain logical address (e.g., a certain LBA) stores a physical address PBA indicating the location (physical memory location) in the NAND flash memory 5 where the data corresponding to this LBA is stored, that is, the block number and offset (offset within the block). As shown in FIG. 26, if 16K byte update data with a starting LBA of LBAx is written to the physical memory location corresponding to offsets +4 to +7 of block BLK#1, as shown in FIG. 28, LUT411 is updated so that BLK#1, offset +4 is stored in the entry corresponding to LBAx, BLK#1, offset +5 is stored in the entry corresponding to LBAx+1, BLK#1, offset +6 is stored in the entry corresponding to LBAx+2, and BLK#1, offset +7 is stored in the entry corresponding to LBAx+3.

図25に示すように、この後、ホスト2は、上述の更新データの書き込みによって不要になった以前のデータを無効化するためのTrimコマンドをフラッシュストレージデバイス3に送信する。図26に示されているように、以前のデータがブロックBLK#0のオフセット+0、オフセット+1、オフセット+2、オフセット+3に対応する位置に格納されている場合には、図29に示すように、ブロック番号(=BLK#0)、オフセット(=+0)、長さ(=4)を指定するTrimコマンドがホスト2からフラッシュストレージデバイス3に送信される。フラッシュストレージデバイス3のコントローラ4は、このTrimコマンドに応じて、ブロック管理テーブル32を更新する(図25、ステップS14)。ステップS15においては、図29に示すように、ブロックBLK#0用のブロック管理テーブルにおいて、オフセット+0~+3に対応するビットマップフラグそれぞれが1から0に変更される。 As shown in FIG. 25, the host 2 then sends a Trim command to the flash storage device 3 to invalidate the previous data that has become unnecessary due to the writing of the update data. As shown in FIG. 26, if the previous data is stored at positions corresponding to offset +0, offset +1, offset +2, and offset +3 of block BLK#0, as shown in FIG. 29, a Trim command specifying the block number (=BLK#0), offset (=+0), and length (=4) is sent from the host 2 to the flash storage device 3. The controller 4 of the flash storage device 3 updates the block management table 32 in response to this Trim command (FIG. 25, step S14). In step S15, as shown in FIG. 29, the bitmap flags corresponding to offsets +0 to +3 in the block management table for block BLK#0 are changed from 1 to 0.

図30は、フラッシュストレージデバイス3に適用されるリードコマンドを示す。 Figure 30 shows a read command applied to flash storage device 3.

リードコマンドは、フラッシュストレージデバイス3にデータの読み出しを要求するコマンドである。このリードコマンドは、コマンドID、物理アドレスPBA、長さ、転送先ポインタを含む。 The read command is a command that requests the flash storage device 3 to read data. This read command includes a command ID, a physical address PBA, a length, and a destination pointer.

コマンドIDはこのコマンドがリードコマンドであることを示すID(コマンドコード)であり、リードコマンドにはリードコマンド用のコマンドIDが含まれる。 The command ID is an ID (command code) that indicates that this command is a read command, and the read command includes a command ID for the read command.

物理アドレスPBAは、データが読み出されるべき最初の物理記憶位置を示す。物理アドレスPBAは、ブロック番号、オフセット(ブロック内オフセット)によって指定される。 The physical address PBA indicates the first physical memory location from which data is to be read. The physical address PBA is specified by the block number and offset (offset within the block).

長さは、リードすべきデータの長さを示す。このデータ長は、Grainの数によって指定可能である。 The length indicates the length of the data to be read. This data length can be specified by the number of grains.

転送先ポインタは、読み出されたデータが転送されるべきホスト2内のメモリ上の位置を示す。 The destination pointer indicates the location in memory in host 2 to which the read data should be transferred.

一つのリードコマンドは、物理アドレスPBA(ブロック番号、オフセット)と長さの組を複数指定することができる。 A single read command can specify multiple pairs of physical address PBA (block number, offset) and length.

図31は、リード動作を示す。 Figure 31 shows the read operation.

ここでは、ブロック番号(=BLK#2)、オフセット(=+5)、長さ(=3)を指定するリードコマンドがホスト2から受信された場合が想定されている。フラッシュストレージデバイス3のコントローラ4は、ブロック番号(=BLK#2)、オフセット(=+5)、長さ(=3)に基づいて、BLK#2からデータd1~d3をリードする。この場合、コントローラ4は、BLK#2のページ1から1ページサイズ分のデータをリードし、このリードデータからデータd1~データd3を抽出する。次いで、コントローラ4は、データd1~データd3を、転送先ポインタによって指定されるホストメモリ上に転送する。 Here, it is assumed that a read command specifying the block number (=BLK#2), offset (=+5), and length (=3) has been received from the host 2. The controller 4 of the flash storage device 3 reads data d1 to d3 from BLK#2 based on the block number (=BLK#2), offset (=+5), and length (=3). In this case, the controller 4 reads one page's worth of data from page 1 of BLK#2, and extracts data d1 to d3 from this read data. The controller 4 then transfers data d1 to d3 to the host memory specified by the destination pointer.

図32は、ホスト2からのリードコマンドに応じて、異なる物理記憶位置にそれぞれ格納されているデータ部をリードする動作を示す。 Figure 32 shows the operation of reading data portions stored in different physical storage locations in response to a read command from host 2.

ここでは、ブロック番号(=BLK#2)、オフセット(=+10)、長さ(=2)、ブロック番号(=BLK#2)、オフセット(=+16)、長さ(=4)を指定するリードコマンドがホスト2から受信された場合が想定されている。フラッシュストレージデバイス3のコントローラ4は、ブロック番号(=BLK#2)、オフセット(=+10)、長さ(=2)に基づいて、BLK#2のページ2から1ページサイズ分のデータをリードし、このリードデータからデータd1~データd2を抽出する。次いで、コントローラ4は、ブロック番号(=BLK#2)、オフセット(=+16)、長さ(=4)に基づいて、BLK#2のページ4から1ページサイズ分のデータ(データd3~データd6)をリードする。そして、コントローラ4は、データd1~データd2とデータd3~データd6とを結合することによって得られる長さ(=6)のリードデータを、リードコマンド内の転送先ポインタによって指定されるホストメモリ上に転送する。 Here, it is assumed that a read command specifying the block number (=BLK#2), offset (=+10), length (=2), block number (=BLK#2), offset (=+16), and length (=4) is received from the host 2. The controller 4 of the flash storage device 3 reads one page's worth of data from page 2 of BLK#2 based on the block number (=BLK#2), offset (=+10), and length (=2), and extracts data d1 to data d2 from this read data. Next, the controller 4 reads one page's worth of data (data d3 to data d6) from page 4 of BLK#2 based on the block number (=BLK#2), offset (=+16), and length (=4). The controller 4 then transfers the read data of length (=6) obtained by combining data d1 to data d2 and data d3 to data d6 to the host memory specified by the transfer destination pointer in the read command.

これにより、たとえブロック内に不良ページが存在する場合であっても、リードエラーを引き起こすことなく、別個の物理記憶位置からデータ部をリードすることができる。また、たとえデータが2つのブロックに跨がって書き込まれている場合であっても、このデータを一つのリードコマンドの発行によってリードすることができる。 This allows the data portion to be read from a separate physical memory location without causing a read error, even if a bad page exists in a block. Also, even if data is written across two blocks, this data can be read by issuing a single read command.

図33は、ホスト2とフラッシュストレージデバイス3とによって実行されるリード処理のシーケンスを示す。 Figure 33 shows the sequence of a read process performed by the host 2 and the flash storage device 3.

ホスト2は、ホスト2によって管理されているLUT411を参照して、ユーザアプリケーションからのリード要求に含まれる論理アドレスをブロック番号、オフセットに変換する。そして、ホスト2は、このブロック番号、オフセット、長さを指定するリードコマンドをフラッシュストレージデバイス3に送信する。 The host 2 refers to the LUT 411 managed by the host 2 and converts the logical address included in the read request from the user application into a block number and offset. The host 2 then sends a read command to the flash storage device 3 that specifies the block number, offset, and length.

フラッシュストレージデバイス3のコントローラ4がリードコマンドをホスト2から受信した時、コントローラ4は、このリードコマンドによって指定されたブロック番号に対応するブロックをリード対象のブロックとして決定するとともに、このリードコマンドによって指定されたオフセットに基づいてリード対象のページを決定する(ステップS31)。ステップS31では、コントローラ4は、まず、リードコマンドによって指定されたオフセットを、ページサイズを表す粒度の数(ここでは、4)で除算してもよい。そして、コントローラ4は、この除算によって得られる商および余りを、リード対象のページ番号およびリード対象のページ内オフセット位置としてそれぞれ決定してもよい。 When the controller 4 of the flash storage device 3 receives a read command from the host 2, the controller 4 determines the block corresponding to the block number specified by the read command as the block to be read, and determines the page to be read based on the offset specified by the read command (step S31). In step S31, the controller 4 may first divide the offset specified by the read command by the granularity number representing the page size (here, 4). The controller 4 may then determine the quotient and remainder obtained by this division as the page number to be read and the offset position within the page to be read, respectively.

コントローラ4は、ブロック番号、オフセット、長さによって規定されるデータをNAND型フラッシュメモリ5からリードし(ステップS32)、このリードデータをホスト2に送信する。 The controller 4 reads the data defined by the block number, offset, and length from the NAND flash memory 5 (step S32) and transmits this read data to the host 2.

図34は、フラッシュストレージデバイス3に適用されるGC制御コマンドを示す。 Figure 34 shows the GC control commands applied to flash storage device 3.

GC制御コマンドは、GCソースブロック番号およびGCデスティネーションブロック番号をフラッシュストレージデバイス3に通知するために使用される。ホスト2は、各ブロックの有効データ量/無効データ量を管理しており、有効データ量がより少ない幾つかのブロックをGCソースブロックとして選択することができる。また、ホスト2は、フリーブロックリストを管理しており、幾つかのフリーブロックをGCデスティネーションブロックとして選択することができる。このGC制御コマンドは、コマンドID、GCソースブロック番号、GCデスティネーションブロック番号、等を含んでもよい。 The GC control command is used to notify the flash storage device 3 of the GC source block number and the GC destination block number. The host 2 manages the amount of valid data/invalid data for each block, and can select some blocks with a smaller amount of valid data as GC source blocks. The host 2 also manages a free block list, and can select some free blocks as GC destination blocks. This GC control command may include a command ID, a GC source block number, a GC destination block number, etc.

コマンドIDはこのコマンドがGC制御コマンドであることを示すID(コマンドコード)であり、GC制御コマンドにはGC制御コマンド用のコマンドIDが含まれる。 The command ID is an ID (command code) that indicates that this command is a GC control command, and the GC control command includes a command ID for the GC control command.

GCソースブロック番号は、GCソースブロックを示すブロック番号である。ホスト2は、どのブロックをGCソースブロックとすべきかを指定することができる。ホスト2は、複数のGCソースブロック番号を一つのGC制御コマンドに設定してもよい。 The GC source block number is a block number that indicates a GC source block. The host 2 can specify which block should be the GC source block. The host 2 may set multiple GC source block numbers in one GC control command.

GCデスティネーションブロック番号は、GCデスティネーションブロックを示すブロック番号である。ホスト2は、どのブロックをGCデスティネーションブロックとすべきかを指定することができる。ホスト2は、複数のGCデスティネーションブロック番号を一つのGC制御コマンドに設定してもよい。 The GC destination block number is a block number that indicates a GC destination block. The host 2 can specify which block should be the GC destination block. The host 2 may set multiple GC destination block numbers in one GC control command.

図35は、GC用コールバックコマンドを示す。 Figure 35 shows the callback command for GC.

GC用コールバックコマンドは、GCによってコピーされた有効データの論理アドレスとこの有効データのコピー先位置を示すブロック番号およびオフセットとをホスト2に通知するために使用される。 The GC callback command is used to notify the host 2 of the logical address of the valid data copied by the GC and the block number and offset indicating the destination location of this valid data.

GC用コールバックコマンドは、コマンドID、論理アドレス、長さ、デスティネーション物理アドレスを含んでよい。 The GC callback command may include a command ID, a logical address, a length, and a destination physical address.

コマンドIDはこのコマンドがGC用コールバックコマンドであることを示すID(コマンドコード)であり、GC用コールバックコマンドにはGC用コールバックコマンド用のコマンドIDが含まれる。 The command ID is an ID (command code) that indicates that this command is a GC callback command, and the GC callback command contains a command ID for the GC callback command.

論理アドレスは、GCによってGCソースブロックからGCデスティネーションブロックにコピーされた有効データの論理アドレスを示す。 The logical address indicates the logical address of the valid data copied by GC from the GC source block to the GC destination block.

長さは、このコピーされたデータの長さを示す。このデータ長は、粒度(Grain)の数によって指定されてもよい。 Length indicates the length of the copied data. This data length may be specified by the number of grains.

デスティネーション物理アドレスは、有効データがコピーされたGCデスティネーションブロック内の位置を示す。デスティネーション物理アドレスは、ブロック番号、オフセット(ブロック内オフセット)によって指定される。 The destination physical address indicates the location within the GC destination block where the valid data has been copied. The destination physical address is specified by the block number and offset (offset within the block).

図36は、ガベージコレクション(GC)動作の手順を示す。 Figure 36 shows the procedure for garbage collection (GC) operations.

例えば、ホスト2は、ホスト2によって管理されているフリーブロックリストに含まれている残りフリーブロックの数が閾値以下に低下した場合、GCソースブロックおよびGCデスティネーションブロックを選択し、選択されたGCソースブロックおよび選択されたGCデスティネーションブロックを指定するGC制御コマンドをフラッシュストレージデバイス3に送信する(ステップS41)。あるいは、ライト処理部412がフリーブロック群を管理する構成においては、残りフリーブロックの数が閾値以下に低下した際にライト処理部412がホスト2にその旨通知を行ない、通知を受信したホスト2がブロック選択およびGC制御コマンドの送信を行なってもよい。 For example, when the number of remaining free blocks included in the free block list managed by the host 2 falls below a threshold, the host 2 selects a GC source block and a GC destination block, and transmits a GC control command specifying the selected GC source block and the selected GC destination block to the flash storage device 3 (step S41). Alternatively, in a configuration in which the write processing unit 412 manages the free block group, when the number of remaining free blocks falls below a threshold, the write processing unit 412 may notify the host 2 of this, and the host 2 receiving the notification may select blocks and transmit a GC control command.

このGC制御コマンドを受信すると、フラッシュストレージデバイス3のコントローラ4は、GCソースブロック内の有効データを書き込むべきGCデスティネーションブロック内の位置(コピー先位置)を決定する動作と、GCソースブロック内の有効データをGCデスティネーションブロック内のコピー先位置にコピーする動作とを含むデータコピー動作を実行する(ステップS51)。ステップS51では、コントローラ4は、GCソースブロック(コピー元ブロック)内の有効データのみならず、この有効データとこの有効データに対応する論理アドレスの双方を、GCソースブロック(コピー元ブロック)からGCデスティネーションブロック(コピー先ブロック)にコピーする。これにより、GCデスティネーションブロック(コピー先ブロック)内にデータと論理アドレスとのペアを保持することができる。 Upon receiving this GC control command, the controller 4 of the flash storage device 3 executes a data copy operation including an operation of determining a position (destination position) in the GC destination block to which the valid data in the GC source block should be written, and an operation of copying the valid data in the GC source block to the destination position in the GC destination block (step S51). In step S51, the controller 4 copies not only the valid data in the GC source block (source block), but also both the valid data and the logical address corresponding to the valid data from the GC source block (source block) to the GC destination block (destination block). This makes it possible to hold pairs of data and logical addresses in the GC destination block (destination block).

また、ステップS51では、GCソースブロック内の全ての有効データのコピーが完了するまでデータコピー動作が繰り返し実行される。複数のGCソースブロックがGC制御コマンドによって指定された場合には、全てのGCソースブロック内の全ての有効データのコピーが完了するまでデータコピー動作が繰り返し実行される。 In addition, in step S51, the data copy operation is repeatedly executed until copying of all valid data in the GC source block is completed. If multiple GC source blocks are specified by the GC control command, the data copy operation is repeatedly executed until copying of all valid data in all GC source blocks is completed.

そして、コントローラ4は、コピーされた有効データ毎に、その有効データの論理アドレス(LBA)と、その有効データのコピー先位置を示すデスティネーション物理アドレス等を、GC用コールバックコマンドを使用してホスト2に通知する(ステップS52)。ある有効データに対応するデスティネーション物理アドレスは、この有効データがコピーされたコピー先ブロック(GCデスティネーションブロック)のブロック番号と、この有効データがコピーされたコピー先ブロック内の物理記憶位置を示すブロック内物理アドレス(ブロック内オフセット)とによって表される。 Then, the controller 4 notifies the host 2 of the logical address (LBA) of each valid data item copied, the destination physical address indicating the destination location of the valid data, etc., using a GC callback command (step S52). The destination physical address corresponding to a certain valid data item is represented by the block number of the destination block (GC destination block) to which the valid data is copied, and the intra-block physical address (intra-block offset) indicating the physical storage location within the destination block to which the valid data is copied.

ホスト2がこのGC用コールバックコマンドを受信した時、ホスト2は、ホスト2によって管理されているLUT411を更新して、コピーされた各有効データに対応する論理アドレスにデスティネーション物理アドレス(ブロック番号、ブロック内オフセット)をマッピングする(ステップS42)。 When the host 2 receives this GC callback command, the host 2 updates the LUT 411 managed by the host 2 and maps the destination physical address (block number, offset within block) to the logical address corresponding to each valid data that was copied (step S42).

図37は、GCのために実行されるデータコピー動作の例を示す。 Figure 37 shows an example of a data copy operation performed for GC.

図37では、GCソースブロック(ここではブロックBLK#50)のオフセット+4に対応する位置に格納されている有効データ(LBA=10)が、GCデスティネーションブロック(ここではブロックBLK#100)のオフセット+0に対応する位置にコピーされ、GCソースブロック(ここではブロックBLK#50)のオフセット+10に対応する位置に格納されている有効データ(LBA=20)が、GCデスティネーションブロック(ここではブロックBLK#100)のオフセット+1に対応する位置にコピーされた場合が想定されている。この場合、コントローラ4は、{LBA10、BLK#100、オフセット(=+0)、LBA20、BLK#100、オフセット(=+1)}をホストに通知する(GC用コールバック処理)。 In FIG. 37, it is assumed that valid data (LBA=10) stored at a position corresponding to offset +4 in the GC source block (here, block BLK#50) is copied to a position corresponding to offset +0 in the GC destination block (here, block BLK#100), and valid data (LBA=20) stored at a position corresponding to offset +10 in the GC source block (here, block BLK#50) is copied to a position corresponding to offset +1 in the GC destination block (here, block BLK#100). In this case, the controller 4 notifies the host of {LBA10, BLK#100, offset (=+0), LBA20, BLK#100, offset (=+1)} (GC callback processing).

図38は、図37のデータコピー動作の結果に基づいて更新されるホスト2のLUT411の内容を示す。 Figure 38 shows the contents of LUT 411 of host 2 that are updated based on the results of the data copy operation in Figure 37.

このLUT411においては、LBA10に対応するブロック番号およびオフセットは、BLK#50、オフセット(=+4)から、BLK#100、オフセット(=+0)に更新される。同様に、LBA20に対応するブロック番号およびオフセットは、BLK#50、オフセット(=+10)から、BLK#100、オフセット(=+1)に更新される。 In this LUT411, the block number and offset corresponding to LBA10 are updated from BLK#50, offset (=+4) to BLK#100, offset (=+0). Similarly, the block number and offset corresponding to LBA20 are updated from BLK#50, offset (=+10) to BLK#100, offset (=+1).

LUT411が更新された後、ホスト2は、BLK#50およびオフセット(=+4)を指定するTrimコマンドをフラッシュストレージデバイス3に送信して、BLK#50のオフセット(=+4)に対応する位置に格納されているデータを無効化してもよい。さらに、ホスト2は、BLK#50およびオフセット(=+10)を指定するTrimコマンドをフラッシュストレージデバイス3に送信して、BLK#50のオフセット(=+10)に対応する位置に格納されているデータを無効化してもよい。あるいは、ホスト2からTrimコマンドを送信せず、GC処理の一環としてコントローラ4がブロック管理テーブル32を更新してこれらのデータを無効化してもよい。 After the LUT 411 is updated, the host 2 may send a Trim command specifying BLK#50 and an offset (=+4) to the flash storage device 3 to invalidate the data stored at the location corresponding to the offset (=+4) of BLK#50. Furthermore, the host 2 may send a Trim command specifying BLK#50 and an offset (=+10) to the flash storage device 3 to invalidate the data stored at the location corresponding to the offset (=+10) of BLK#50. Alternatively, the host 2 may not send a Trim command, and the controller 4 may update the block management table 32 as part of the GC process to invalidate this data.

以上説明したように、本実施形態によれば、第1の論理アドレスと第1のブロック番号とを指定するライト要求をホスト2から受信した場合、フラッシュストレージデバイス3のコントローラ4は、ホスト2からのデータを書き込むべき、第1のブロック番号を有するブロック(書き込み先ブロック)内の位置(書き込み先位置)を決定し、ホスト2からのデータを書き込み先ブロックの書き込み先位置に書き込み、第1の位置を示す第1のブロック内物理アドレス、または第1の論理アドレスと第1のブロック番号と第1のブロック内物理アドレスとの組のいずれかを、ホスト2に通知する。 As described above, according to this embodiment, when a write request specifying a first logical address and a first block number is received from the host 2, the controller 4 of the flash storage device 3 determines a position (destination position) in the block (destination block) having the first block number to which data from the host 2 should be written, writes the data from the host 2 to the destination position in the destination block, and notifies the host 2 of either a physical address in the first block indicating the first position, or a combination of the first logical address, the first block number, and a physical address in the first block.

したがって、ホスト2がブロック番号をハンドリングし、フラッシュストレージデバイス3がページ書き込み順序制約/バッドページ等を考慮して、ホスト2によって指定されるブロック番号を有するブロック内の書き込み先位置(ブロック内オフセット)を決定するという構成を実現できる。ホスト2がブロック番号をハンドリングすることにより、上位階層(ホスト2)のアプリケーションレベルアドレス変換テーブルと従来型SSDのLUTレベルアドレス変換テーブルとのマージを実現できる。また、フラッシュストレージデバイス3は、NAND型フラッシュメモリ5の特徴/制約を考慮してNAND型フラッシュメモリ5を制御することができる。さらに、ホスト2はブロック境界を認識することができるので、ブロック境界/ブロックサイズを考慮してユーザデータを各ブロックに書き込むことができる。これにより、ホスト2が同一ブロック内のデータをデータ更新等によって一斉に無効化する等の制御を行うことが可能となるので、GCが実行される頻度を下げることが可能となる。この結果、ライトアンプリフィケーションが低下され、フラッシュストレージデバイス3の性能の向上、フラッシュストレージデバイス3の寿命の最大化を実現できる。 Therefore, a configuration can be realized in which the host 2 handles the block number, and the flash storage device 3 determines the write destination position (offset within the block) within the block having the block number specified by the host 2, taking into account page write order constraints/bad pages, etc. By the host 2 handling the block number, it is possible to realize merging of the application level address conversion table of the upper layer (host 2) with the LUT level address conversion table of the conventional SSD. In addition, the flash storage device 3 can control the NAND flash memory 5 while taking into account the characteristics/constraints of the NAND flash memory 5. Furthermore, since the host 2 can recognize block boundaries, it is possible to write user data to each block while taking into account the block boundaries/block size. This allows the host 2 to control the data in the same block to be invalidated all at once by data update, etc., so that it is possible to reduce the frequency with which GC is executed. As a result, write amplification is reduced, and the performance of the flash storage device 3 can be improved and the life of the flash storage device 3 can be maximized.

したがって、ホスト2とフラッシュストレージデバイス3との間の適切な役割分担を実現でき、これによってホスト2とフラッシュストレージデバイス3とを含むシステム全体のI/O性能の向上を図ることができる。 As a result, appropriate division of roles between the host 2 and the flash storage device 3 can be achieved, thereby improving the I/O performance of the entire system including the host 2 and the flash storage device 3.

また、ガベージコレクションのためのコピー元ブロック番号およびコピー先ブロック番号を指定する制御コマンドをホスト2から受信した場合、フラッシュストレージデバイス3のコントローラ4は、複数のブロックから、コピー元ブロック番号を有する第2のブロックとコピー先ブロック番号を有する第3のブロックとを選択し、第2のブロックに格納されている有効データを書き込むべき第3のブロック内のコピー先位置を決定し、有効データを第3のブロックのコピー先位置にコピーする。そして、コントローラは、有効データの論理アドレスと、コピー先ブロック番号と、第3のブロック内のコピー先位置を示す第2のブロック内物理アドレスとを、ホスト2に通知する。これにより、GCにおいても、ホスト2がブロック番号(コピー元ブロック番号、コピー先ブロック番号)のみをハンドリングし、フラッシュストレージデバイス3がコピー先ブロック内のコピー先位置を決定する、という構成を実現できる。 When a control command specifying a source block number and a destination block number for garbage collection is received from the host 2, the controller 4 of the flash storage device 3 selects a second block having the source block number and a third block having the destination block number from among the multiple blocks, determines a destination position in the third block to which the valid data stored in the second block should be written, and copies the valid data to the destination position in the third block. The controller then notifies the host 2 of the logical address of the valid data, the destination block number, and the physical address in the second block indicating the destination position in the third block. This allows a configuration to be realized in which, even in GC, the host 2 handles only the block numbers (source block number, destination block number), and the flash storage device 3 determines the destination position in the destination block.

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

また、本実施形態では、不揮発性メモリとしてNAND型フラッシュメモリを例示した。しかし、本実施形態の機能は、例えば、MRAM(Magnetoresistive
Random Access Memory)、PRAM(Phase change
Random Access Memory)、ReRAM(Resistive Random Access Memory)、又は、FeRAM(Ferroelectric Random Access Memory)のような他の様々な不揮発性メモリにも適用できる。
In the present embodiment, a NAND flash memory is exemplified as a nonvolatile memory. However, the function of the present embodiment can be applied to, for example, MRAM (Magnetoresistive Random Access Memory).
Random Access Memory), PRAM (Phase change
The present invention can also be applied to various other non-volatile memories such as Random Access Memory (RRAM), Resistive Random Access Memory (ReRAM), or Ferroelectric Random Access Memory (FeRAM).

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

2…ホスト、3…フラッシュストレージデバイス、4…コントローラ、5…NAND型フラッシュメモリ、21…ライト動作制御部、22…リード動作制御部、23…GC動作制御部。 2... host, 3... flash storage device, 4... controller, 5... NAND flash memory, 21... write operation control unit, 22... read operation control unit, 23... GC operation control unit.

Claims (20)

ホストに接続可能なメモリシステムであって、
各々が消去動作の単位であり、各々がブロック番号により指定される複数のブロックを含む不揮発性メモリと、
前記不揮発性メモリに電気的に接続され、前記不揮発性メモリを制御するコントローラとを具備し、
前記コントローラは、
第1のブロック番号を少なくとも指定するコピーコマンドを前記ホストから受信したことに応じて、
前記複数のブロックのうちの前記第1のブロック番号により指定される第1のブロックから第1のデータを読み出し、
前記複数のブロックのうちの前記第1のブロックとは異なる第2のブロック内の第1の位置に前記第1のデータを書き込み、
前記第1のデータを識別するための第1の識別子と、前記第2のブロックを指定する第2のブロック番号と、前記第2のブロック内の前記第1の位置を示す第1のブロック内物理アドレスと、を前記ホストに通知する、ように構成されている、メモリシステム。
1. A memory system connectable to a host, comprising:
a non-volatile memory including a plurality of blocks, each of which is a unit of an erase operation and each of which is designated by a block number;
a controller electrically connected to the nonvolatile memory and controlling the nonvolatile memory;
The controller:
in response to receiving a copy command from the host that specifies at least a first block number;
reading first data from a first block designated by the first block number among the plurality of blocks;
writing the first data to a first location in a second block different from the first block among the plurality of blocks;
and notifying the host of a first identifier for identifying the first data, a second block number specifying the second block, and a physical address within the first block indicating the first location within the second block.
前記コントローラは、
前記第1の識別子と、前記第1のブロック番号と、を少なくとも指定するライトコマンドを前記ホストから受信したことに応じ、前記第1のデータと、前記第1の識別子と、を前記第1のブロックに書き込み、
前記コピーコマンドを前記ホストから受信したことに応じ、前記第1のブロックに格納されている前記第1の識別子を読み出して、前記第1の識別子を前記第2のブロックに書き込む、ようにさらに構成されている請求項1記載のメモリシステム。
The controller:
writing the first data and the first identifier to the first block in response to receiving a write command from the host, the write command specifying at least the first identifier and the first block number;
2. The memory system of claim 1, further configured to, in response to receiving the copy command from the host, read the first identifier stored in the first block and write the first identifier to the second block.
前記第1のブロックの先頭から前記第1のデータが格納されていた位置までのオフセットと、前記第2のブロックの先頭から前記第1の位置までのオフセットとは、互いに異なる、請求項1記載のメモリシステム。 The memory system of claim 1, wherein an offset from the beginning of the first block to the location where the first data was stored is different from an offset from the beginning of the second block to the first location. 前記コントローラは、前記第2のブロック番号と前記第1のブロック内物理アドレスとを指定するリードコマンドを前記ホストから受信したことに応じ、前記第2のブロック番号と前記第1のブロック内物理アドレスとに基づいて、前記第2のブロック内の前記第1の位置から前記第1のデータをリードする、ようにさらに構成されている請求項1記載のメモリシステム。 The memory system of claim 1, further configured to: read the first data from the first location in the second block based on the second block number and the physical address in the first block in response to receiving a read command from the host that specifies the second block number and the physical address in the first block. 前記複数のブロックのそれぞれは複数のページを含み、
前記第1のブロック内物理アドレスは、前記第2のブロックの先頭から前記第1の位置までのオフセットをページサイズとは異なるサイズを有する粒度の倍数で示す第1のブロック内オフセットによって表される、請求項1記載のメモリシステム。
each of the plurality of blocks includes a plurality of pages;
2. The memory system of claim 1, wherein the physical address within the first block is represented by an offset within a first block indicating an offset from the beginning of the second block to the first location in a multiple of a granularity having a size different from a page size.
前記コントローラは、
前記複数のブロックのうちのフリーブロック群を管理し、
前記ホストからブロック割り当てコマンドを受信したことに応じ、前記フリーブロック群の一つのフリーブロックを前記ホストに割り当て、前記割り当てられたブロックを指定するブロック番号を前記ホストに通知する、ようにさらに構成されている請求項1記載のメモリシステム。
The controller:
Managing a free block group among the plurality of blocks;
2. The memory system of claim 1, further configured to, in response to receiving a block allocation command from the host, allocate one free block of the group of free blocks to the host, and notify the host of a block number designating the allocated block.
前記コントローラは、
最大ブロック番号を要求する第1のコマンドを前記ホストから受信したことに応じ、前記複数のブロックの数を示す最大ブロック番号を前記ホストに通知し、
ブロックサイズを要求する第2のコマンドを前記ホストから受信したことに応じ、前記複数のブロックの各々のブロックサイズを前記ホストに通知する、ようにさらに構成されている請求項1記載のメモリシステム。
The controller:
notifying the host of a maximum block number indicating the number of the plurality of blocks in response to receiving a first command from the host requesting a maximum block number;
2. The memory system of claim 1, further configured to notify the host of a block size of each of the plurality of blocks in response to receiving a second command from the host requesting a block size.
前記コントローラは、前記第2のコマンドにブロック番号が含まれている場合、前記第2のコマンドに含まれている前記ブロック番号で指定されるブロックのブロックサイズを前記ホストに通知する、ように構成されている請求項7記載のメモリシステム。 The memory system of claim 7, wherein the controller is configured to notify the host of the block size of the block specified by the block number included in the second command when the second command includes a block number. 前記ブロック番号は物理アドレスとして指定される、請求項1記載のメモリシステム。 The memory system of claim 1, wherein the block number is specified as a physical address. 前記第1の識別子は前記第1のデータに関連付けられた論理アドレスである、請求項1記載のメモリシステム。 The memory system of claim 1, wherein the first identifier is a logical address associated with the first data. 各々が消去動作の単位であり、各々がブロック番号により指定される複数のブロックを含む不揮発性メモリを、コントローラにより制御する制御方法であって、
第1のブロック番号を少なくとも指定するコピーコマンドをホストから受信したことに応じて、
前記複数のブロックのうちの前記第1のブロック番号により指定される第1のブロックから第1のデータを読み出すことと、
前記複数のブロックのうちの前記第1のブロックとは異なる第2のブロック内の第1の位置に前記第1のデータを書き込むことと、
前記第1のデータを識別するための第1の識別子と、前記第2のブロックを指定する第2のブロック番号と、前記第2のブロック内の前記第1の位置を示す第1のブロック内物理アドレスと、を前記ホストに通知することと、を具備する制御方法。
A control method for controlling a non-volatile memory including a plurality of blocks, each of which is a unit of an erase operation and each of which is specified by a block number, by a controller, comprising:
in response to receiving a copy command from the host specifying at least a first block number;
reading first data from a first block designated by the first block number among the plurality of blocks;
writing the first data to a first location in a second block different from the first block among the plurality of blocks;
notifying the host of a first identifier for identifying the first data, a second block number for specifying the second block, and a physical address within the first block indicating the first position within the second block.
前記第1の識別子と、前記第1のブロック番号と、を少なくとも指定するライトコマンドを前記ホストから受信したことに応じ、前記第1のデータと、前記第1の識別子と、を前記第1のブロックに書き込むことと、
前記コピーコマンドを前記ホストから受信したことに応じ、前記第1のブロックに格納されている前記第1の識別子を読み出して、前記第1の識別子を前記第2のブロックに書き込むことと、をさらに具備する請求項11記載の制御方法。
writing the first data and the first identifier to the first block in response to receiving a write command from the host, the write command designating at least the first identifier and the first block number;
12. The control method according to claim 11, further comprising: in response to receiving the copy command from the host, reading the first identifier stored in the first block and writing the first identifier to the second block.
前記第1のブロックの先頭から前記第1のデータが格納されていた位置までのオフセットと、前記第2のブロックの先頭から前記第1の位置までのオフセットとは、互いに異なる請求項11記載の制御方法。 The control method according to claim 11, wherein an offset from the beginning of the first block to the position where the first data was stored and an offset from the beginning of the second block to the first position are different from each other. 前記第2のブロック番号と前記第1のブロック内物理アドレスとを指定するリードコマンドを前記ホストから受信したことに応じ、前記第2のブロック番号と前記第1のブロック内物理アドレスとに基づいて、前記第2のブロック内の前記第1の位置から前記第1のデータをリードすること、をさらに具備する請求項11記載の制御方法。 The control method according to claim 11, further comprising: reading the first data from the first location in the second block based on the second block number and the physical address in the first block in response to receiving a read command from the host that specifies the second block number and the physical address in the first block. 前記複数のブロックのそれぞれは複数のページを含み、
前記第1のブロック内物理アドレスは、前記第2のブロックの先頭から前記第1の位置までのオフセットをページサイズとは異なるサイズを有する粒度の倍数で示す第1のブロック内オフセットによって表される、請求項11記載の制御方法。
each of the plurality of blocks includes a plurality of pages;
12. The control method according to claim 11, wherein the physical address within the first block is represented by an offset within the first block indicating an offset from the beginning of the second block to the first position in a multiple of a granularity having a size different from a page size.
前記複数のブロックのうちのフリーブロック群を管理することと、
前記ホストからブロック割り当てコマンドを受信したことに応じ、前記フリーブロック群の一つのフリーブロックを前記ホストに割り当て、前記割り当てられたブロックを指定するブロック番号を前記ホストに通知することと、をさらに具備する請求項11記載の制御方法。
managing a free block group among the plurality of blocks;
12. The control method according to claim 11, further comprising: in response to receiving a block allocation command from the host, allocating one free block from the group of free blocks to the host, and notifying the host of a block number specifying the allocated block.
最大ブロック番号を要求する第1のコマンドを前記ホストから受信したことに応じ、前記複数のブロックの数を示す最大ブロック番号を前記ホストに通知することと、
ブロックサイズを要求する第2のコマンドを前記ホストから受信したことに応じ、前記複数のブロックの各々のブロックサイズを前記ホストに通知することと、をさらに具備する請求項11記載の制御方法。
notifying the host of a maximum block number indicating the number of the plurality of blocks in response to receiving a first command from the host requesting a maximum block number;
12. The method according to claim 11, further comprising: in response to receiving a second command from the host requesting a block size, notifying the host of a block size of each of the plurality of blocks.
前記第2のコマンドにブロック番号が含まれている場合、前記第2のコマンドに含まれている前記ブロック番号で指定されるブロックのブロックサイズを前記ホストに通知する、請求項17記載の制御方法。 The control method according to claim 17, further comprising: notifying the host of the block size of the block specified by the block number included in the second command if the second command includes a block number. 前記ブロック番号は物理アドレスとして指定される、請求項11記載の制御方法。 The control method of claim 11, wherein the block number is specified as a physical address. 前記第1の識別子は前記第1のデータに関連付けられた論理アドレスである、請求項11記載の制御方法。 The control method according to claim 11, wherein the first identifier is a logical address associated with the first data.
JP2023171318A 2021-11-17 2023-10-02 MEMORY SYSTEM AND CONTROL METHOD - Patent application Active JP7567009B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2023171318A JP7567009B2 (en) 2021-11-17 2023-10-02 MEMORY SYSTEM AND CONTROL METHOD - Patent application

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2021187155A JP7167295B2 (en) 2017-10-27 2021-11-17 Memory system and control method
JP2022166284A JP7366222B2 (en) 2021-11-17 2022-10-17 Memory system and control method
JP2023171318A JP7567009B2 (en) 2021-11-17 2023-10-02 MEMORY SYSTEM AND CONTROL METHOD - Patent application

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2022166284A Division JP7366222B2 (en) 2021-11-17 2022-10-17 Memory system and control method

Publications (2)

Publication Number Publication Date
JP2023166013A JP2023166013A (en) 2023-11-17
JP7567009B2 true JP7567009B2 (en) 2024-10-15

Family

ID=80203766

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2022166284A Active JP7366222B2 (en) 2021-11-17 2022-10-17 Memory system and control method
JP2023171318A Active JP7567009B2 (en) 2021-11-17 2023-10-02 MEMORY SYSTEM AND CONTROL METHOD - Patent application

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2022166284A Active JP7366222B2 (en) 2021-11-17 2022-10-17 Memory system and control method

Country Status (1)

Country Link
JP (2) JP7366222B2 (en)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160321010A1 (en) 2015-04-28 2016-11-03 Kabushiki Kaisha Toshiba Storage system having a host directly manage physical data locations of storage device

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5183662B2 (en) * 2010-03-29 2013-04-17 三菱電機株式会社 Memory control device and memory control method
JP6406707B2 (en) * 2015-03-23 2018-10-17 東芝メモリ株式会社 Semiconductor memory device
JP6523193B2 (en) * 2016-03-08 2019-05-29 東芝メモリ株式会社 Storage system, information processing system and control method

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160321010A1 (en) 2015-04-28 2016-11-03 Kabushiki Kaisha Toshiba Storage system having a host directly manage physical data locations of storage device

Also Published As

Publication number Publication date
JP2023166013A (en) 2023-11-17
JP7366222B2 (en) 2023-10-20
JP2022179798A (en) 2022-12-02

Similar Documents

Publication Publication Date Title
US12147673B2 (en) Memory system and method for controlling nonvolatile memory
US11748256B2 (en) Memory system and method for controlling nonvolatile memory
US11797436B2 (en) Memory system and method for controlling nonvolatile memory
JP2019079464A (en) Memory system and control method
JP7013546B2 (en) Memory system
JP7567009B2 (en) MEMORY SYSTEM AND CONTROL METHOD - Patent application
JP7524443B2 (en) MEMORY SYSTEM AND CONTROL METHOD - Patent application
JP7204020B2 (en) Control method
JP7167295B2 (en) Memory system and control method
JP2023021450A (en) memory system

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20231002

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20241002

R150 Certificate of patent or registration of utility model

Ref document number: 7567009

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150