JP2015036981A - Serial-read-optimization variable size flash translation layer - Google Patents

Serial-read-optimization variable size flash translation layer Download PDF

Info

Publication number
JP2015036981A
JP2015036981A JP2014150593A JP2014150593A JP2015036981A JP 2015036981 A JP2015036981 A JP 2015036981A JP 2014150593 A JP2014150593 A JP 2014150593A JP 2014150593 A JP2014150593 A JP 2014150593A JP 2015036981 A JP2015036981 A JP 2015036981A
Authority
JP
Japan
Prior art keywords
data
read
page
flash
map
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2014150593A
Other languages
Japanese (ja)
Other versions
JP5978259B2 (en
JP2015036981A5 (en
Inventor
アール・コーエン
Cohen Earl
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.)
LSI Corp
Original Assignee
LSI Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by LSI Corp filed Critical LSI Corp
Publication of JP2015036981A publication Critical patent/JP2015036981A/en
Publication of JP2015036981A5 publication Critical patent/JP2015036981A5/ja
Application granted granted Critical
Publication of JP5978259B2 publication Critical patent/JP5978259B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/08Address circuits; Decoders; Word-line control circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/06Address interface arrangements, e.g. address buffers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

PROBLEM TO BE SOLVED: To improve performance and efficiency for use of a flash storage.SOLUTION: A serial-read-optimization variable size flash translation layer is configured to be able to map a logical block address to a physical address in a nonvolatile memory (NVM). A map entry corresponding to the logical block address of a read command designates an address, an offset, and a length of a specific page in the NVM, the offset and the length are converted to the number of read units to be accessed in the specific page, and only the read units in the number are read from the specific page so as to access data of the read command. The read units in the number include data associated with at least one other logical block address optionally and/or selectively. Furthermore, a group of map entries such as a map page is stored in the NVM in a compressed form.

Description

関連出願の相互参照
本願の優先権の利益の請求は、本願の出願データシート、リクエスト(Request)、または、(必要であれば)通達(Transmittal)においてなされている。本願のタイプが許容する範囲内で、本願は、あらゆる目的のために、参照によって下記の出願を組み込むものとする。下記の全ての出願は、本願発明がなされたときに本願の出願人と出願人が共通であった。
米国仮出願(整理番号がSF-11-15でシリアルナンバーは61/521,739):2011年8月9日出願。第一発明者はEarl T. Cohen。発明の名称は、「I/O DEVICE AND COMPUTING HOSTINTEROPERATION」。
米国仮出願(整理番号がSF-11-15Aでシリアルナンバーは61/531,551):2011年9月6日出願。第一発明者はEarl T. Cohen。発明の名称は、「I/O DEVICEAND COMPUTING HOST INTEROPERATION」。
米国仮出願(整理番号がSF-11-15Bでシリアルナンバーは61/543,666):2011年10月5日出願。第一発明者はEarl T. Cohen。発明の名称は、「I/O DEVICE AND COMPUTING HOSTINTEROPERATION」。
米国仮出願(整理番号がSF-10-02でシリアルナンバーは61/316,373):2010年3月22日出願。第一発明者はRadoslav Danilak。発明の名称は、「Accessing Compressed Data ofVarying-Sized Quanta in Non-Volatile Memory」。
米国出願(整理番号がSF-10-02USでシリアルナンバーは13/053,175):2011年3月21日出願。第一発明者はRadoslav Danilak。発明の名称は、「Accessing Compressed Data ofVarying-Sized Quanta in Non-Volatile Memory」。
米国仮出願(整理番号がSF-10-10でシリアルナンバーは61/418,846):2010年1月12日出願。第一発明者はJeremy IssacNathaniel Werner。発明の名称は、「DYNAMIC HIGHER-LEVEL REDUNDANCY MODEMANAGEMENT WITH INDEPENDENT SILICON ELEMENTS」。
米国仮出願(整理番号がSF-10-10でシリアルナンバーは61/543,707):2011年5月10日出願。第一発明者はEarl T. Cohen。発明の名称は、「SELF-JOURNALING AND HIERARCHICALCONSISTENCY FOR NON-VOLATILE STORAGE」。
米国仮出願(整理番号がSF-10-06でシリアルナンバーは61/543,707):2011年10月5日出願。第一発明者はEarl T. Cohen。発明の名称は、「SELF-JOURNALING AND HIERARCHICALCONSISTENCY FOR NON-VOLATILE STORAGE」。
PCT出願(整理番号がSF-10-06PCTでシリアルナンバーはPCTUS1258583):2012年10月4日出願。第一発明者はEarl T. Cohen。発明の名称は、「SELF-JOURNALING AND HIERARCHICALCONSISTENCY FOR NON-VOLATILE STORAGE」。
米国仮出願(整理番号がSF-10-12でシリアルナンバーは61/755,169):2013年1月22日出願。第一発明者はEarl T. Cohen。発明の名称は、「Storage Address Space to NVM Address,Span, and Length Mapping/Converting」。
Cross-reference to related applications Claims for the benefit of priority of the present application are made in the application data sheet of the present application, Request, or (if necessary) Transmittal. To the extent permitted by the type of the present application, this application incorporates the following applications by reference for all purposes: All of the following applications had the same applicant and applicant when the present invention was made.
US provisional application (reference number SF-11-15 and serial number 61 / 521,739): filed August 9, 2011. The first inventor is Earl T. Cohen. The title of the invention is “I / O DEVICE AND COMPUTING HOSTINTEROPERATION”.
US provisional application (reference number SF-11-15A, serial number 61 / 531,551): filed September 6, 2011. The first inventor is Earl T. Cohen. The title of the invention is “I / O DEVICEAND COMPUTING HOST INTEROPERATION”.
US provisional application (reference number SF-11-15B, serial number 61 / 543,666): filed October 5, 2011. The first inventor is Earl T. Cohen. The title of the invention is “I / O DEVICE AND COMPUTING HOSTINTEROPERATION”.
US provisional application (reference number SF-10-02, serial number 61 / 316,373): filed March 22, 2010. The first inventor is Radoslav Danilak. The title of the invention is “Accessing Compressed Data of Varying-Sized Quanta in Non-Volatile Memory”.
US application (reference number SF-10-02US and serial number 13 / 053,175): filed March 21, 2011. The first inventor is Radoslav Danilak. The title of the invention is “Accessing Compressed Data of Varying-Sized Quanta in Non-Volatile Memory”.
US provisional application (reference number SF-10-10, serial number 61 / 418,846): filed January 12, 2010. The first inventor is Jeremy IssacNathaniel Werner. The name of the invention is “DYNAMIC HIGHER-LEVEL REDUNDANCY MODEMANAGEMENT WITH INDEPENDENT SILICON ELEMENTS”.
US provisional application (reference number SF-10-10, serial number 61 / 543,707): filed May 10, 2011. The first inventor is Earl T. Cohen. The name of the invention is “SELF-JOURNALING AND HIERARCHICALCONSISTENCY FOR NON-VOLATILE STORAGE”.
US provisional application (reference number SF-10-06, serial number 61 / 543,707): filed October 5, 2011. The first inventor is Earl T. Cohen. The name of the invention is “SELF-JOURNALING AND HIERARCHICALCONSISTENCY FOR NON-VOLATILE STORAGE”.
PCT application (reference number SF-10-06PCT and serial number PCTUS1258583): filed October 4, 2012. The first inventor is Earl T. Cohen. The name of the invention is “SELF-JOURNALING AND HIERARCHICALCONSISTENCY FOR NON-VOLATILE STORAGE”.
US provisional application (reference number SF-10-12, serial number 61 / 755,169): filed January 22, 2013. The first inventor is Earl T. Cohen. The title of the invention is “Storage Address Space to NVM Address, Span, and Length Mapping / Converting”.

分野:コンピューティングホスト及びI/Oデバイス技術における進歩が、性能、効率、及び実用性を向上させるために必要とされている。   Area: Advances in computing host and I / O device technology are needed to improve performance, efficiency, and practicality.

関連技術:本明細書で言及している、コンテキスト、定義、もしくは比較のためのものを含む技術及び概念は、公知または周知であると明示されている場合を除いて、既に公知であるかまたは先行技術の一部であると解釈されるべきではない。本明細書で引用されている、特許、特許出願、及び刊行物を含む全ての参考文献(もしあれば)は、それらが本明細書に具体的に組み込まれているか否かにかかわらず、あらゆる目的のために、参照により全体が本明細書に組み込まれるものとする。   Related Techniques: Techniques and concepts referred to herein, including those for context, definition, or comparison, are already known, unless explicitly stated to be known or known, or It should not be construed as part of the prior art. All references, if any, cited herein, including patents, patent applications, and publications, are hereby incorporated by reference, whether or not they are specifically incorporated herein. For purposes of reference, the entire contents are hereby incorporated by reference.

国際公開第2012/075200International Publication No.2012 / 075200

本発明を、多くのやり方で、たとえば、プロセス、製造品、装置、システム、物質の組成ないし構成、コンピューター可読記憶媒体(たとえば、ディスクなどの光学式及び/または磁気式大容量記憶装置における媒体や、フラッシュストレージ(フラッシュ記憶装置)などの不揮発性記憶装置を有する集積回路)などのコンピューター可読媒体、または、プログラム命令が光学的もしくは電子的な通信リンクを介して送られるコンピューターネットワークとして、実施することができる。詳細な説明には、上記の分野におけるコスト、利益性、性能、効率、及び実用性を改善可能にする本発明の1以上の実施形態が開示されている。詳細な説明には、詳細な説明の残りの部分の理解を容易にするためのイントロダクションが含まれている。このイントロダクションには、本明細書及び/または図面に開示されている概念にしたがうシステム、方法、製造品、及び、コンピューター可読媒体のうちの1以上の例示的な実施形態が含まれている。「結論」においてより詳細に記載されているように、本発明は、特許請求の範囲に含まれる全ての可能な改変及び変更を含む。   The present invention may be applied in many ways, for example, processes, articles of manufacture, devices, systems, material compositions or configurations, computer readable storage media (eg, media in optical and / or magnetic mass storage devices such as disks, etc. Implemented as a computer readable medium such as a flash storage (an integrated circuit having a non-volatile storage device such as a flash storage device), or a computer network through which program instructions are sent via an optical or electronic communication link Can do. The detailed description discloses one or more embodiments of the invention that can improve cost, profitability, performance, efficiency, and utility in the above fields. The detailed description includes an introduction to facilitate understanding of the remainder of the detailed description. This introduction includes one or more exemplary embodiments of systems, methods, articles of manufacture, and computer readable media in accordance with the concepts disclosed herein and / or in the drawings. As described in greater detail in the “Conclusion”, the present invention includes all possible modifications and variations that fall within the scope of the claims.

フラッシュページ内の固定サイズ領域に対して論理ブロックアドレスをマッピングする1実施形態の選択された細部を示す。FIG. 6 illustrates selected details of one embodiment of mapping logical block addresses to fixed size regions within a flash page. オプションとしてフラッシュページにわたる可変サイズ領域に対して論理ブロックアドレスをマッピングする1実施形態の選択された細部を示す。FIG. 4 illustrates selected details of one embodiment of mapping logical block addresses to variable size regions that optionally span flash pages. FIG. 整数の数の読み出しユニットを含むフラッシュページの1実施形態を示す。FIG. 6 illustrates one embodiment of a flash page that includes an integer number of read units. FIG. 1以上の読み出しユニットにわたる可変サイズ領域に論理ブロックアドレスをマッピングする1実施形態の選択された細部を示す。FIG. 4 illustrates selected details of one embodiment of mapping logical block addresses to variable size regions across one or more read units. ヘッダー及びデータを含む読み出しユニットの1実施形態の選択された細部を示す。Fig. 4 illustrates selected details of one embodiment of a read unit including a header and data. ヘッダー及びデータを含むフラッシュページの1実施形態の選択された細部を示す。Fig. 4 illustrates selected details of one embodiment of a flash page including header and data. ヘッダー及びデータを含むフラッシュページの1実施形態の選択された細部を示す。Fig. 4 illustrates selected details of one embodiment of a flash page including header and data. 種々のタイプのヘッダーの1実施形態の選択された細部を示す。Fig. 4 illustrates selected details of one embodiment of various types of headers. マップエントリの1実施形態の選択された細部を示す。Fig. 4 illustrates selected details of one embodiment of a map entry. 種々の圧縮されたマップエントリの1実施形態の選択された細部を示す。Fig. 4 illustrates selected details of one embodiment of various compressed map entries. 不揮発性メモリに対する読み出しのフローチャートを示す。The flowchart of the read-out with respect to a non-volatile memory is shown. SSDコントローラの1実施形態の選択された細部を示す。Fig. 4 illustrates selected details of one embodiment of an SSD controller.

本発明の1以上の実施形態の詳細な説明が、本発明の選択された細部を示す添付の図面と共に以下で提供される。本発明は、それらの実施形態に関連して説明される。それらの実施形態は、単なる例示であって、本発明は、本明細書及び図面において開示されている任意のまたは全ての実施形態に限定されず、また、それらの実施形態によって網羅されるものでもないこと、及び、本発明は、多くの代替形態、変形形態、及び等価物を含むことが理解されるべきである。説明が単調になるのを避けるために、種々の単語ラベル(「第1の」、「最後の」、「ある」、「種々の」、「更なる」、「他の」、「特定の」、「選択された」、「いくつかの」、及び、「注目すべき」を含むが、これらには限定されない)を実施形態の個別の組に適用することができる。ただし、本明細書で使用されているそれらのラベルは、品質、または、任意の形態の好みもしくは先入観を表明するのではなく、単に、それらの個別の組を便利に識別するためのものであることが意図されている。開示されているプロセスのいくつかの動作ないし処理の順番は、本発明の範囲内で変更可能である。複数の実施形態が、プロセス、方法、及び/またはプログラム命令の特徴に違いがあるように説明されているときは常に、所定のもしくは動的に決定された基準にしたがって、該複数の実施形態にそれぞれ対応する複数の動作モードの1つの静的な及び/または動的な選択を行う他の実施形態が考慮されている。本発明を十分に理解できるようにするために、以下の説明では、多くの特定の細部が説明される。それらの細部は例示のために提供されており、それらの細部の一部または全てがなくても、特許請求の範囲にしたがって本発明を実施することができる。本発明がいたずらに不明瞭にならないようにするために、本発明に関連する技術分野において既知の技術事項については詳しくは説明していない。   A detailed description of one or more embodiments of the invention is provided below along with accompanying figures that illustrate selected details of the invention. The invention will be described in connection with those embodiments. These embodiments are merely examples, and the present invention is not limited to any or all of the embodiments disclosed in this specification and drawings, and is also encompassed by those embodiments. It should be understood that the present invention includes many alternatives, modifications, and equivalents. To avoid the monotony of the description, various word labels (“first”, “last”, “present”, “various”, “further”, “other”, “specific” , “Selected”, “several”, and “noticeable”) can be applied to individual sets of embodiments. However, the labels used herein are not intended to express quality or any form of preference or prejudice, but merely to conveniently identify their individual sets. Is intended. The order of some operations or processes of the disclosed processes can be changed within the scope of the present invention. Whenever embodiments are described as having differences in characteristics of processes, methods, and / or program instructions, the plurality of embodiments may be in accordance with predetermined or dynamically determined criteria. Other embodiments are contemplated that make one static and / or dynamic selection of a plurality of corresponding operating modes. In the following description, numerous specific details are set forth in order to provide a thorough understanding of the present invention. Those details are provided for the purpose of example, and the invention may be practiced according to the claims without some or all of these details. In order not to unnecessarily obscure the present invention, technical matters known in the technical field related to the present invention have not been described in detail.

イントロダクション
このイントロダクションは、詳細な説明をより早く理解できるようにするためにのみ設けられたものであり、本発明は、このイントロダクションで提示されている(明示的な例を含む)概念には限定されない。任意のイントロダクションのパラグラフは、当然ながら主題全体を要約したものであって、説明を網羅することも、説明されていることに限定することも意図されていない。たとえば、下記のイントロダクションは、特定の実施形態に対してのみ空間及び構成によって限定された概略情報を提供する。最終的には特許請求の範囲に含まれる実施形態を含むその他の多くの実施形態が明細書の残りの部分を通じて説明されている。
This introduction is provided only for the purpose of providing a quicker understanding of the detailed description, and the present invention is not limited to the concepts (including explicit examples) presented in this introduction. . Any introduction paragraph is, of course, a summary of the entire subject matter and is not intended to be exhaustive or limited to what is described. For example, the following introduction provides summary information limited by space and configuration only for certain embodiments. Many other embodiments, including those that are ultimately within the scope of the claims, are described throughout the remainder of the specification.

本明細書において定義されている種々の略語(たとえば頭字語)の少なくともいくつは、本明細書で使用されている所定の要素を示している。

Figure 2015036981
At least some of the various abbreviations (eg, acronyms) defined herein indicate certain elements that are used herein.
Figure 2015036981

フラッシュトランスレーションレイヤ(FTS。フラッシュ変換レイヤともいう)は、(たとえば、I/Oデバイス(入出力装置)に対するI/O処理を実行するためにホストによって使用される)論理ブロックアドレス空間内の論理ブロックアドレス(LBA)を、NANDフラッシュ不揮発性メモリ(NAND Flash NVM)などの不揮発性メモリ(NVM)内の物理的位置にマッピングする。このマッピングは、マッピングユニットと呼ばれる、1以上の論理ブロックからなる整列したユニット(アラインされたユニット)に対して作用して、各マッピングユニットが、該マッピングユニットのデータが格納される対応する物理的位置を有するようにする(ただし、マッピングユニットに書き込みがされていない、すなわちマッピングユニットに変更が加えられていない場合には、物理的位置が空である可能性がある)。たとえば、4KBのマッピングユニットの場合は、8つの連続する(及び典型的には8つのセクタが整列した)SATA 512バイトセクタが単一のユニットとしてマッピングされる。一般に、マップなどの変換テーブル(トランスレーションテーブル)は、マッピングユニットに関連する論理ブロックアドレスからNVM内の物理アドレスへの、及び/または、他の制御情報へのそれぞれの変換(トランスレーション)を格納するために、マッピングユニット毎に1つのエントリを有している。   The flash translation layer (FTS, also known as the flash translation layer) is the logic in the logical block address space (used, for example, by the host to perform I / O processing for I / O devices (input / output devices)). A block address (LBA) is mapped to a physical location in a non-volatile memory (NVM), such as a NAND flash non-volatile memory (NAND Flash NVM). This mapping operates on aligned units (aligned units) consisting of one or more logical blocks, called mapping units, where each mapping unit has a corresponding physical unit in which the mapping unit's data is stored. Have a position (but the physical position may be empty if the mapping unit has not been written, i.e. no changes have been made to the mapping unit). For example, in the case of a 4 KB mapping unit, eight consecutive (and typically eight sector aligned) SATA 512 byte sectors are mapped as a single unit. In general, a translation table (translation table) such as a map stores each translation (translation) from a logical block address associated with a mapping unit to a physical address in NVM and / or to other control information. To do this, it has one entry per mapping unit.

NANDフラッシュなどの不揮発性メモリは、フラッシュページ(flash page)と呼ばれる書き込み可能な(プログラム可能な)ユニットを提供する。フラッシュページは、複数のユーザー(非ECC)データバイト、並びに、メタデータ及び誤り訂正コーディング(ECC)用のある量のもしくはかなりの量の予備の空間を含んでおり、一般に、NVMの最小の書き込み可能なユニットである。典型的なフラッシュページのサイズは、8KBまたは16KBまたは32KB(ユーザーデータ)であり、一方、典型的なマッピングユニットのサイズは4KBまたは8KBである(「ユーザー」データという用語が、フラッシュページに関して使用されているが、いくつかのフラッシュページは、マップデータ及び/またはチェックポイントデータなどの「システム」データを格納している。ユーザーデータは、一般に、フラッシュページの非ECC部分を指すことが意図されている)。フラッシュページは、複数のブロックに編成ないし構成され、典型的には、1ブロック当たり、128、256、または512個のフラッシュページが存在する。ブロックは、消去することができる最小サイズのユニットであり、フラッシュページは、該フラッシュページに(再)書き込みできるようになる前に消去されなければならない。   Non-volatile memory, such as NAND flash, provides a writable (programmable) unit called a flash page. Flash pages contain multiple user (non-ECC) data bytes, and some or significant amount of extra space for metadata and error correction coding (ECC), typically NVM minimal writes It is a possible unit. Typical flash page sizes are 8 KB or 16 KB or 32 KB (user data), while typical mapping unit sizes are 4 KB or 8 KB (the term “user” data is used for flash pages). However, some flash pages store “system” data such as map data and / or checkpoint data, etc. User data is generally intended to point to non-ECC portions of flash pages ) Flash pages are organized or organized into a plurality of blocks, and typically there are 128, 256, or 512 flash pages per block. A block is the smallest size unit that can be erased, and a flash page must be erased before it can be (re) written to the flash page.

図1に示すように、従来のFTLは、フラッシュページ(たとえば、フラッシュページ100)内のユーザーデータバイトの数(もしくはいくつかの該ユーザーデータバイト)は2の累乗(及び/または、セクタサイズの倍数)であることを前提としており、フラッシュページを、整数個のマッピングユニット(図1にそれぞれが「データ」として示されている)に分割する。たとえば、1つのフラッシュページ当たりのユーザーデータが16KBで、マッピングユニットが4KBの場合、フラッシュページの各々は4つのマッピングユニットを含み、FTLは、マッピングユニットの各々のアドレス(たとえば、LBA[m:u]110)を、それぞれのフラッシュページ、及び、それぞれのフラッシュページ内の4つのマッピングユニットのうちの1つにマッピングする。すなわち、各マップエントリは、flash_page_address[n-1:0]、mapping_unit_within_flash_page[k-1:0]などのそれぞれのフィールドを含む。ここで、flash_page_addressは、NVM内の一意のフラッシュページを指し、mapping_unit_within_flash_pageは、各フラッシュページの2のk乗個のmapping-unit-size(マッピングユニットサイズ)部分のうちの1つを指す(kはNVM全体について一定である)。サブページアドレス104は、flash_page_addressとmapping_unit_within_flash_pageの組み合わせである。セクタベースのアドレス指定では、論理ブロックアドレスの下位側のビット(たとえば、LBA[u-1:0]111)は、マッピングユニット内の複数のセクタ(たとえば、サブページ113内の(1以上の)セクタ)などの副部分(sub-portion)を指定する。   As shown in FIG. 1, a conventional FTL is such that the number of user data bytes (or some of the user data bytes) in a flash page (eg, flash page 100) is a power of 2 (and / or sector size). The flash page is divided into an integer number of mapping units (each shown as “data” in FIG. 1). For example, if the user data per flash page is 16 KB and the mapping unit is 4 KB, each flash page contains 4 mapping units, and the FTL contains the address of each mapping unit (eg, LBA [m: u 110) to each flash page and one of the four mapping units in each flash page. That is, each map entry includes fields such as flash_page_address [n-1: 0] and mapping_unit_within_flash_page [k-1: 0]. Here, flash_page_address refers to a unique flash page within NVM, and mapping_unit_within_flash_page refers to one of the 2 k power-mapping-unit-size (mapping unit size) portions of each flash page (k is Constant for the entire NVM). The subpage address 104 is a combination of flash_page_address and mapping_unit_within_flash_page. In sector-based addressing, the lower bits (eg, LBA [u-1: 0] 111) of the logical block address are stored in multiple sectors (eg, one or more) in subpage 113 in the mapping unit. Specify sub-portion such as sector.

概念的には、図2に示すように、可変サイズフラッシュトランスレーションレイヤ(VFTL)は、マッピングユニットのアドレス(たとえば、LBA[m:u]110)を、1以上のフラッシュページの可変サイズ領域にマッピングする(なぜなら、たとえば、マッピングユニットのデータは、フラッシュに格納される前に圧縮されるからであり、及び/または、別の例では、マッピングユニットは、オブジェクト格納のためなどに、可変サイズ部分としてホストによって書き込まれるからである)。しかしながら、各マップエントリに完全なバイトアドレス204及びバイトデータ長206を提供すると、従来のFTLよりもマップエントリが大きくなってしまう。   Conceptually, as shown in FIG. 2, the variable size flash translation layer (VFTL) assigns the mapping unit address (eg, LBA [m: u] 110) to one or more flash page variable size regions. Mapping (because, for example, the mapping unit's data is compressed before being stored in flash, and / or in another example, the mapping unit may be a variable size portion, such as for object storage, etc. As it is written by the host). However, providing a complete byte address 204 and byte data length 206 for each map entry results in a larger map entry than a conventional FTL.

VFTLは、いくつかのソリッドステートディスク(SSD)で使用されている。それらのシステムは、一般的には、よりハイエンドのクライアント向け、及び/または、ランダムアクセス性能の制約が全体システム設計における要因(ドライビングファクタ)である企業用途向けに設計されている。ローエンド及び/またはモバイル環境に対してVFTLを最適化するために、要因(ドライビングファクタ)としてのシーケンシャル性能(順次または連続アクセス性能)を最適化するための変更が必要である。ユーザーデータ及びVFTLメタデータを編成ないし構成する新しいやり方は、順次読み出し性能が主たる制約である、より低コストで、より効率的なローエンドのモバイルNVMシステムを可能にする。   VFTL is used in some solid state disks (SSD). These systems are typically designed for higher end clients and / or enterprise applications where random access performance constraints are a factor in the overall system design (driving factor). In order to optimize VFTL for low-end and / or mobile environments, changes are required to optimize sequential performance (sequential or continuous access performance) as a factor (driving factor). The new way of organizing and organizing user data and VFTL metadata enables a lower cost, more efficient low-end mobile NVM system where sequential read performance is a major limitation.

いくつかの実施形態では、VFTLは、「読み出しユニット」アドレスとも呼ばれるEpage(ECCページ)アドレスにマッピングすることによって、マッピングユニットのアドレスから物理アドレスへのマッピングを実行する。Epage(すなわち読み出しユニット)は、NVMから読み出すことができ、かつ、NVMの内容を保護するために使用されるECCコード(ECC符号)によって訂正することができる最小量のデータである。すなわち、読み出しユニットの各々は、ある量のデータ、及び、それらのデータを保護する対応するECCチェックバイトを含んでいる。いくつかの実施形態では(フラッシュページ100などの)フラッシュページが、また、いくつかの実施形態では、書き込みのためのユニットとして扱われるフラッシュページのグループが、図3に示すように、整数個の読み出しユニットに分割される。   In some embodiments, the VFTL performs mapping unit address to physical address mapping by mapping to an Epage (ECC page) address, also referred to as a “read unit” address. An Epage (or read unit) is the minimum amount of data that can be read from the NVM and corrected by an ECC code (ECC code) used to protect the contents of the NVM. That is, each read unit includes a certain amount of data and a corresponding ECC check byte that protects the data. In some embodiments, a flash page (such as flash page 100), and in some embodiments, a group of flash pages treated as a unit for writing, as shown in FIG. Divided into readout units.

種々の実施形態において、1つのフラッシュページ当たりの読み出しユニットの数を変更することができる。たとえば、NVMのいくつかの部分は、(ECC用のフラッシュページにおいてより多くのバイトを使って)他のものより強いECCを使用し、並びに、読み出しユニットがより少なく、及び/もしくは、1つの読み出しユニット当たりの使用可能なデータがより少ない。あるいは、別の例では、1つのフラッシュページ当たりの読み出しユニットの数は、NVMが多く使用されるにしたがって変わる。なぜなら、プログラム/消去サイクルは、NVMを劣化させる傾向があるので、NVMがより多く使用される(使い尽くされる)ほど強いECCが必要とされるからである。   In various embodiments, the number of read units per flash page can be varied. For example, some parts of NVM use stronger ECC than others (using more bytes in the flash page for ECC) and have fewer read units and / or one read Less data available per unit. Alternatively, in another example, the number of read units per flash page changes as more NVM is used. This is because program / erase cycles tend to degrade NVM, so that more NVM is used (used up) requires a stronger ECC.

種々の実施形態によれば、使用されるECCは、リードソロモン符号(Reed-Solomon code)、BCH符号、ターボ符号(turbo code)、LDPC符号、ポーラー符号(polar code)、多元符号(non-binary code)、RAID符号(RAIDコード)、消失符号(erasure code)、任意の他の誤り訂正符号、及びそれらの符号の任意の組み合わせ(合成、連結、及びインターリーブを含む)のうちの1以上である。典型的な符号語(コードワード)のサイズは、512バイト(+ECCバイト)から2176バイト(+ECCバイト)の範囲内である。ECCバイトの典型的な数は、ほんの数バイトから数百バイトの範囲内である。   According to various embodiments, the ECC used may be a Reed-Solomon code, a BCH code, a turbo code, an LDPC code, a polar code, a non-binary code. code), RAID code (RAID code), erasure code, any other error correction code, and any combination of these codes (including synthesis, concatenation, and interleaving) . A typical codeword size is in the range of 512 bytes (+ ECC bytes) to 2176 bytes (+ ECC bytes). A typical number of ECC bytes is in the range of just a few bytes to a few hundred bytes.

いくつかの実施形態では、図4に示すように、VFTLマッピングは、可変サイズの(たとえば圧縮された)マッピングユニットのアドレス(たとえば、LBA[m:u]110)を、読み出しユニットアドレス404及びスパン(複数の読み出しユニット)406としてマップのエントリの各々において表される複数の読み出しユニットにマッピングする。マップエントリの1つによって参照される読み出しユニットは、1以上の(論理的及び/または物理的に)連続するフラッシュページ内にある。すなわち、該複数の読み出しユニットは、オプションとして及び/または選択的にフラッシュページの境界を横断する。マップのエントリだけでは、関連するデータの位置を特定するのには十分ではなく(なぜなら、エントリは、読み出しユニットを指示するだけで、読み出しユニット内のデータの位置を指示しないからである)、指示された読み出しユニット内の(ヘッダーなどの)さらなる情報が、関連するデータの位置を正確に特定するために使用される。   In some embodiments, as shown in FIG. 4, the VFTL mapping may include the variable size (eg, compressed) mapping unit address (eg, LBA [m: u] 110), the read unit address 404 and the span. Maps to the multiple read units represented in each of the map entries as (multiple read units) 406. The read unit referenced by one of the map entries is in one or more (logically and / or physically) consecutive flash pages. That is, the plurality of read units optionally and / or selectively cross a flash page boundary. The map entry alone is not sufficient to locate the relevant data (because the entry only points to the read unit, not the position of the data in the read unit) Additional information (such as a header) in the read unit that is used is used to accurately locate the relevant data.

いくつかの実施形態では、データは、NVMの複数のダイにわたって(ストライプ状に)細分化されてフラッシュページに書き込まれる。書き込みデータを複数のダイにわたって(ストライプ)に細分化することは、1つのフラッシュページを、1つの細片(ストライプ)につき一回だけ所与の1つのダイに単に書き込むことによって、書き込み帯域幅を大きくできる点で有利である。複数のダイを横断する細片(ストライプ)を構成するブロックは、Rblock(Rブロック)と呼ばれる。なぜなら、他の実施形態及び/または使用状況において、RAID類似の冗長性が、たとえば1つの冗長ダイを用いて、1つのRblock毎に追加されるからである。種々の実施形態において、NVMのいくつかのブロックは、欠陥を有しており、書き込み時にはスキップされ、このため、細分化(ストライプ化)によって、(不良ブロックのフラッシュページに書き込むのではなく)ダイの1つがスキップされる「ホール」が生じる場合がある。これらの実施形態では、「連続する」フラッシュページは、フラッシュページに書き込む順番によって決定される論理的な順序で連続している。   In some embodiments, data is subdivided (in stripes) across multiple dies of NVM and written to a flash page. Subdividing write data across multiple dies (stripes) reduces write bandwidth by simply writing a single flash page to a given die once per strip (strip). It is advantageous in that it can be enlarged. A block constituting a strip (stripe) crossing a plurality of dies is called an Rblock. This is because in other embodiments and / or usage situations, RAID-like redundancy is added per Rblock, eg, using one redundant die. In various embodiments, some blocks of the NVM have defects and are skipped during writing, and therefore, by subdivision (striping), the die (rather than writing to a bad block flash page) There may be a “hole” in which one of the two is skipped. In these embodiments, “continuous” flash pages are contiguous in a logical order determined by the order in which they are written to the flash page.

種々の実施形態において、図4に示すマッピングは、読み出しユニット内の可変サイズのデータの位置を特定する必要性を引き起こす。図5に示すように、各読み出しユニット(たとえば、読み出しユニット500及び510)は、一組のヘッダー501を有しており、それらのヘッダーは、可変サイズのデータが、1以上の読み出しユニットに「タイルのように重なり合わないように並べられる」(たとえば、余分な空間がない状態で密に詰め込まれる)ときに、典型的にはハードウェアによって書き込まれる。ヘッダーは、NVMが読み取られるときに、可変サイズのデータを取り出すために、典型的には他のハードウェアによって解釈される。可変サイズのデータは、適合する論理ブロックアドレスを有するヘッダーのうちの1つのヘッダー内のそれぞれのオフセット及び長さによって特定され、データは、オプションとして及び/または選択的に、(たとえば、「データ、開始」及び「データ、続く」によって示された可変サイズのデータによって例示されているように)複数の読み出しユニットに及ぶ。   In various embodiments, the mapping shown in FIG. 4 creates a need to locate variable sized data within the read unit. As shown in FIG. 5, each read unit (eg, read units 500 and 510) has a set of headers 501, which include variable size data in one or more read units. It is typically written by hardware when it is "arranged non-overlapping like tiles" (eg, packed tightly with no extra space). The header is typically interpreted by other hardware to retrieve variable size data when the NVM is read. The variable size data is identified by a respective offset and length in one of the headers having a matching logical block address, and the data may optionally and / or optionally (eg, “data, It spans multiple read units (as illustrated by the variable size data indicated by “start” and “data, follow”).

種々の実施形態において、ヘッダーは、リサイクリングすなわち再利用(ガーベジコレクション)の一部としても使用される。すなわち、ヘッダーに論理ブロックアドレス(または、等価的にはマッピングユニットアドレス)を含めることによって、読み出しユニット内の可変サイズのデータを見つけることが可能になり、及び、読み出しユニットのうちの特定の1つの読み出しユニットが読み出されたときに、(マップ内の論理ブロックアドレスを調べて(または探して)、該マップが、該特定の読み出しユニットの物理アドレスを依然として指示しているか、または、該読み出しユニットの別の物理アドレスを指示するように更新されているかを判定することによって)該読み出しユニット内の可変サイズのデータが、依然として有効であるかまたは上書きされているかを決定する手段が提供される。   In various embodiments, the header is also used as part of recycling or recycling (garbage collection). That is, by including a logical block address (or equivalently a mapping unit address) in the header, it is possible to find variable size data in the read unit, and a specific one of the read units When a read unit is read (examine (or look for) a logical block address in the map), the map still points to the physical address of the particular read unit, or the read unit Means are provided for determining whether the variable size data in the read unit is still valid or overwritten (by determining whether it has been updated to point to another physical address).

いくつかの実施形態では、論理ブロックアドレスに基づいて読み出しユニットからデータを取り出すための専用のハードウェアが、ランダム読み出しに対して高い効率で動作するために必要である。該専用のハードウェアは、1以上の読み出しユニット内のヘッダーを解析して、所与の論理ブロックアドレスを有するヘッダーのうちの1つを見つけ、その後、それぞれの長さ及びオフセットを用いて関連付けられている可変サイズのデータを取り出す。しかしながら、ハードウェアベースのソリューションは(シリコン面積及び電力の点で)コストが高い。シーケンシャル性能もしくは連続性能がランダム性よりも重要なローエンド及び/またはモバイル環境の場合には、シリコン面積を小さくし、電力を節約し、及び、高いシーケンシャルスループットレート(順次スループットレート)を達成するために、VFTLに対する変更が必要である。   In some embodiments, dedicated hardware for retrieving data from the read unit based on the logical block address is required to operate with high efficiency for random reads. The dedicated hardware parses the headers in one or more read units to find one of the headers with a given logical block address, and is then associated with each length and offset Retrieve variable-size data. However, hardware-based solutions are expensive (in terms of silicon area and power). For low-end and / or mobile environments where sequential or continuous performance is more important than randomness, to reduce silicon area, save power, and achieve high sequential throughput rates Changes to VFTL are necessary.

いくつかの実施形態では、順次読み出し最適化可変サイズフラッシュトランスレーションレイヤ(SRO-VFTL: Sequential-Read-OptimizedVariable-size Flash Translation Layer)は、データ内のヘッダーにギャップ(すき間)がないようにして、データをフラッシュページ(または、いくつかの実施形態では、書き込みためのユニットとして扱われるフラッシュページのグループ)にタイルのように(重ならないように)並べる。この場合、全てのヘッダーは、フラッシュページの一つの部分においてグループ化される。他の実施形態では、ヘッダーは、データをアクセスするために動的には使用されず(いくつかのVFTLではそのように動的に使用される)、再利用及び回復のためにのみ使用される。その代わり、マップのエントリは、フラッシュページ内の可変サイズの(たとえば圧縮された)データを見つけるのに必要な完全な情報を含んでいる。ヘッダーとデータをフラッシュページの異なる部分に分けることによって、ヘッダーだけを含む読み出しユニット、ヘッダーとデータの両方を含む読み出しユニット(ただし、この読み出しユニットは1つのフラッシュページに1つだけ存在する)、及び、データだけを含む読み出しユニットを提供することができる。   In some embodiments, the Sequential Read Optimization Variable Size Flash Translation Layer (SRO-VFTL) ensures that there are no gaps in the headers in the data, Data is tiled (not overlapping) into flash pages (or in some embodiments, a group of flash pages treated as a unit for writing). In this case, all headers are grouped in one part of the flash page. In other embodiments, headers are not used dynamically to access data (and so dynamically in some VFTL), but only for reuse and recovery. . Instead, the map entry contains the complete information needed to find variable-sized (eg, compressed) data in the flash page. By dividing the header and data into different parts of the flash page, a read unit containing only the header, a read unit containing both the header and data (but only one such read unit exists on a flash page), and A read unit containing only data can be provided.

SRO-VFTLは、順次読み出しスループットに対して低コストで最適化されるが、ランダム読み出しIOP、ランダム書き込みIOP、及び、順次書き込みスループットなどの他の基準についても比較的良好に動作することができる。しかしながら、各読み出しユニットにおけるヘッダーを伴うVFTLタイプのデータタイリングなどの機能に対するハードウェア支援を除去することは、必然的に、制御プロセッサにより大きな負荷を与えることになる。   SRO-VFTL is optimized at low cost for sequential read throughput, but can operate relatively well for other criteria such as random read IOP, random write IOP, and sequential write throughput. However, removing hardware support for functions such as VFTL-type data tiling with a header in each readout unit inevitably places a heavy burden on the control processor.

図6は、SRO-VFTLフラッシュページの第1の実施形態を示し、図7は、SRO-VFTLフラッシュページの第2の実施形態を示す。図6の実施形態と図7の実施形態の違いは、前のフラッシュページ640から継続するデータが、ヘッダーの前にあるか後にあるかである。種々の実施形態、及び、フラッシュページ内のデータの種々の配列が考慮されている。   FIG. 6 shows a first embodiment of the SRO-VFTL flash page, and FIG. 7 shows a second embodiment of the SRO-VFTL flash page. The difference between the embodiment of FIG. 6 and the embodiment of FIG. 7 is whether the data continuing from the previous flash page 640 is before or after the header. Various embodiments and various arrangements of data within the flash page are contemplated.

種々の実施形態によれば、フラッシュページ(FP)は、下記のうちの1以上を含む。
・マスターヘッダー610、Rblockヘッダー620(たとえば、Rblock内の各ブロックの最初のページ内に追加されたヘッダー)、及び、ゼロ以上の追加のパックされたヘッダー(packed header)630を含むヘッダー(ただし、Rblockヘッダーはオプションとして及び/または選択的に含まれる)。
・前のフラッシュページから継続するデータ(マッピングユニットの可変サイズのデータの一部)640。ただし、該データはオプションとして及び/または選択的に含まれる。
・フラッシュページを満たすための、1以上のマッピングユニット650のパックされた(たとえば、オプションとして及び/または選択的に圧縮された)データ。該データの最後は、オプションとして及び/または選択的に、後続のフラッシュページ内へと継続する。
・フラッシュページの最後にあるオプションのパディング(650に含まれている)。パディングは、たとえば、
i)フラッシュページに追加された最後の可変サイズのデータ部分の後に、ヘッダーのサイズより小さい未使用バイトが残された(このため、別の可変サイズのデータ部分を開始するために新しいヘッダーを追加することができなくなった)場合、
ii)オプションとして及び/または選択的に、1つのフラッシュページ当たりの指定された数のヘッダーを超えている場合(このため、フラッシュページに格納されているマッピングユニットの数が、マッピングユニットのデータのサイズによってではなく、ヘッダーの指定された数によって制限されている)
に使用される。
According to various embodiments, a flash page (FP) includes one or more of the following.
A master header 610, an Rblock header 620 (eg, a header added in the first page of each block in the Rblock), and a header that includes zero or more additional packed headers 630 (however, Rblock headers are optionally and / or optionally included).
Data that continues from the previous flash page (part of the variable size data of the mapping unit) 640. However, the data is optionally and / or optionally included.
Packed (eg, optionally and / or selectively compressed) data of one or more mapping units 650 to fill a flash page. The end of the data may optionally and / or optionally continue into subsequent flash pages.
• Optional padding at the end of the flash page (included in 650). For example, padding
i) After the last variable-size data part added to the flash page, unused bytes smaller than the size of the header were left (so a new header was added to start another variable-size data part You ca n’t)
ii) Optionally and / or optionally if the specified number of headers per flash page is exceeded (so that the number of mapping units stored in a flash page is the number of mapping unit data Limited by the specified number of headers, not by size)
Used for.

いくつかの実施形態では、SRO-VFTLによる回復及び/または再利用(すなわちガーベジコレクション)は、非SRO-VFTLのように全ての読み出しユニットではなく、フラッシュページの各々のヘッダー部分だけを読み出し及び/または誤り訂正し及び/または検査できるようにされている点で有利である。再利用において、フラッシュページのデータを書き換えなければならないと判断された場合には、そのデータを読み出して、誤り訂正をしなければならない。いくつかの実施形態では、フラッシュページ全体が再利用のために読み出されるが、フラッシュページ内のデータを再利用する必要があるということが決定されるまでは、ヘッダー部分だけが誤り訂正される。   In some embodiments, SRO-VFTL recovery and / or reuse (ie, garbage collection) reads and / or only the header portion of each flash page, rather than all read units as in non-SRO-VFTL. It is also advantageous in that error correction and / or inspection can be performed. In the case of reuse, when it is determined that the data of the flash page must be rewritten, the data must be read out and error corrected. In some embodiments, the entire flash page is read for reuse, but only the header portion is error corrected until it is determined that the data in the flash page needs to be reused.

種々の実施形態では、1つのフラッシュページ当たりのヘッダーの数は、全てのヘッダーがNVMから読み出されること確保するために、読み出す必要がある1つのフラッシュページ当たりの読み出しユニットの数がある限度内にとどまるように制限される。図6の実施形態では、ヘッダーの最大数を含むのに十分な数の読み出しユニットだけを読み出さなければならない。図7の実施形態では、前のフラッシュページから続いて完了する最大サイズのデータ(たとえば、継続データ640)に対処するために、追加の数の読み出しユニットを読み出さなければならない。しかしながら、図7の実施形態は、前のフラッシュページから続くデータの完了部(以下、データ完了部という)にアクセスするための読み出しユニットの数(または複数の読み出しユニット)を、関連するマップエントリから決定できるようにする。なぜなら、そのデータ完了部内のバイト数は、関連するマップエントリのそれぞれのオフセット及び長さ、並びに、前のフラッシュページ内のユーザー(非ECC)データのバイト数に基づいて決定可能であるからである。さらに、そのデータ完了部に先行するヘッダーだけが、オプションの(各ブロックの最初のページなどの既知のフラッシュページにのみ存在する)Rblockヘッダー、及び、(各フラッシュページに常に存在する)マスターヘッダーである。図6の実施形態では、NVMに2回アクセスすることなくデータ完了部を読み出すためには、最大数のヘッダーが存在することが前提とされていなければならない(または、フラッシュページ全体を読み出さなければならない)。   In various embodiments, the number of headers per flash page is within a certain limit to the number of read units per flash page that need to be read to ensure that all headers are read from NVM. Limited to stay. In the embodiment of FIG. 6, only a sufficient number of read units must be read to contain the maximum number of headers. In the embodiment of FIG. 7, an additional number of read units must be read to accommodate the maximum size data (eg, continuation data 640) that is subsequently completed from the previous flash page. However, the embodiment of FIG. 7 determines the number of read units (or multiple read units) to access the data completion portion (hereinafter referred to as the data completion portion) following the previous flash page from the associated map entry. Be able to decide. This is because the number of bytes in the data completion part can be determined based on the respective offset and length of the associated map entry and the number of bytes of user (non-ECC) data in the previous flash page. . In addition, only the headers preceding the data completion part are optional Rblock headers (existing only on known flash pages, such as the first page of each block), and master headers (always present on each flash page) is there. In the embodiment of FIG. 6, in order to read the data completion part without accessing NVM twice, it must be assumed that there is a maximum number of headers (or the entire flash page must be read). Must not).

いくつかの実施形態では、SRO-VFTLは、複数のマップエントリを有する単一レベルのマップを使用する。他の実施形態では、SRO-VFTLは、第2レベルマップ(SLM:Second-LevelMap)ページを指示する第1レベルマップ(FLM:First-Level Map)を有する2レベルのマップなどの多レベルのマップを使用し、この場合、第2レベルマップページの各々は複数のマップエントリを含んでいる。さらに他の実施形態では、多レベルのマップは、3レベルなどの3以上のレベルを有している。いくつかの実施形態及び/または使用状況では、多レベルのマップの使用は、マップの(たとえば使用に)関連する部分だけを、ローカルメモリ(たとえばオンチップメモリ)に格納(たとえば、キャッシュ)できるようにし、これによって、マップを維持するコストを低減することができる。たとえば、典型的な使用パターンが、任意の時点において、1GBの論理ブロックアドレス空間をアクティブにする場合には、論理ブロックアドレス空間のそのアクティブな1GBの部分にアクセスするのに十分なマップの部分だけが、NVMに格納する場合に比べて高速にアクセスするために局所的に格納される。論理ブロックアドレス空間のアクティブな部分の外部への参照によって、NVMから多レベルのマップの1以上のレベルのうちの必要な部分がフェッチされて(取り出されて)、オプションとして及び/または選択的に、該マップの局所的に格納されている他の部分が置き換えられる。   In some embodiments, SRO-VFTL uses a single level map with multiple map entries. In other embodiments, the SRO-VFTL is a multi-level map, such as a two-level map with a first-level map (FLM) that points to a second-level map (SLM) page. Where each second level map page includes a plurality of map entries. In still other embodiments, the multi-level map has 3 or more levels, such as 3 levels. In some embodiments and / or usage situations, the use of multi-level maps allows only relevant portions (eg, for use) of the map to be stored (eg, cached) in local memory (eg, on-chip memory). This can reduce the cost of maintaining the map. For example, if a typical usage pattern activates a 1 GB logical block address space at any point in time, only a portion of the map sufficient to access that active 1 GB portion of the logical block address space. Is stored locally for faster access compared to storing in NVM. By reference to the outside of the active part of the logical block address space, the required part of one or more levels of the multi-level map is fetched (retrieved) from NVM, optionally and / or selectively , Other locally stored parts of the map are replaced.

マップエントリの各々は、複数のマッピングユニットのうちの1つのマッピングユニットのアドレスに関連付けられている(対応している)。論理ブロックアドレスは、論理ブロックアドレスのゼロ以上の最下位ビット(LSB)を除去し、及び/または、整列のために論理ブロックアドレスに定数を加えることなどによって、マッピングユニットアドレスに変換され、該マッピングユニットアドレスは、対応するマップのエントリを決定するために、該マップ内で調べられる。   Each map entry is associated with (corresponding to) the address of one of the plurality of mapping units. A logical block address is converted to a mapping unit address, such as by removing zero or more least significant bits (LSBs) of the logical block address and / or adding a constant to the logical block address for alignment, etc. The unit address is looked up in the map to determine the corresponding map entry.

図8は、種々のタイプのヘッダーの1実施形態の詳細を示す。図8の例では、ヘッダーは、それぞれ、6バイトにぴったり収まるようにフォーマットされている。種々の実施形態によれば、種々のタイプのヘッダーは、以下のうちの1以上を満たす。
・全てが同じサイズ。
・オプションとして及び/または選択的にサイズが異なる。
・それぞれのヘッダーが、該ヘッダーのサイズを指定するそれぞれのフィールドを含む。
・異なるフラッシュページ間ではサイズが異なる。
・上記の任意の組み合わせ。
FIG. 8 shows details of one embodiment of various types of headers. In the example of FIG. 8, each header is formatted to fit exactly 6 bytes. According to various embodiments, the various types of headers satisfy one or more of the following.
・ All are the same size.
• Optional and / or selectively different sizes.
Each header includes a respective field that specifies the size of the header.
・ The size is different between different flash pages.
-Any combination of the above.

種々の実施形態によれば、フラッシュページ内のヘッダーは、下記のうちの1以上を含む。
・可変サイズデータ部分に関連付けられている情報を示すデータヘッダー(810)。いくつかの実施形態では、データヘッダーに関連付けられているデータは、該データヘッダーが現れるのと同じフラッシュページ内で開始する。他の実施形態及び/または使用状況では、あるフラッシュページだけがデータヘッダー用の残りの空間を有している場合には、関連付けられている全てのデータは、後続のフラッシュページ内で開始する。
・第2レベルマップ(SLM)ヘッダー(820)などのマップヘッダー。第2レベルマップヘッダーは、(第2レベルマップの再利用及び/または回復などのために)どの第2レベルマップページが格納されているかを示す第1レベルマップインデックス(FLMI)を含む。
・ログ/チェックポイントヘッダー(820)。ログ/チェックポイントヘッダーは、再利用、回復、エラー処理、デバッグ(デバッギング)、または他の特別な状況ないし条件で使用されるデータを示す。
・データを対応するマップ/チェックポイント情報に関連付けるための回復(処理)の一部として使用されるエポック(Epoch)ヘッダー(830)。典型的には、1つのフラッシュページ毎に少なくとも1つのエポックヘッダーがある。
・マスターヘッダー(870)。マスターヘッダー(870)は、フラッシュページ内のヘッダーの数に関する情報を提供するために該フラッシュページについて1回使用され、非ヘッダーデータ(ヘッダーではないデータ)は、該フラッシュページ内で開始する。図6及び図7の実施形態に示すように、非ヘッダーデータの開始を決定する種々の技術がある。
・Rblockヘッダー(880)。Rblockヘッダー(880)は、Rblockの各ブロック内の最初のフラッシュページなどの所定のフラッシュページにおいて使用される。
・パディングヘッダーやより長い長さをサポートするチェックポイントヘッダーなどの他のタイプのヘッダー(840)。
いくつかの実施形態では、ヘッダーのいくつかは、ヘッダーの複数のサブタイプを提供するTYPE(タイプ)フィールドを含む。種々の実施形態では、ヘッダーのいくつかは、ヘッダーに関連付けられているデータの長さを含むLEN(長さ)フィールドを含む。
According to various embodiments, the header in the flash page includes one or more of the following.
A data header (810) indicating information associated with the variable size data portion. In some embodiments, the data associated with the data header begins in the same flash page where the data header appears. In other embodiments and / or usage situations, if only one flash page has the remaining space for the data header, all associated data starts in a subsequent flash page.
Map headers such as second level map (SLM) headers (820). The second level map header includes a first level map index (FLMI) that indicates which second level map page is stored (eg, for reuse and / or recovery of the second level map).
Log / checkpoint header (820). The log / checkpoint header indicates data used in reuse, recovery, error handling, debugging (debugging), or other special situations or conditions.
An Epoch header (830) used as part of the recovery (processing) to associate the data with the corresponding map / checkpoint information. There is typically at least one epoch header per flash page.
Master header (870). A master header (870) is used once for the flash page to provide information regarding the number of headers in the flash page, and non-header data (data that is not a header) begins in the flash page. There are various techniques for determining the start of non-header data, as shown in the embodiment of FIGS.
• Rblock header (880). The Rblock header (880) is used in a given flash page, such as the first flash page in each block of the Rblock.
Other types of headers (840) such as padding headers and checkpoint headers that support longer lengths.
In some embodiments, some of the headers include a TYPE field that provides multiple subtypes of the header. In various embodiments, some of the headers include a LEN (length) field that includes the length of the data associated with the header.

図9は、マップエントリ900の1実施形態の選択された細部を示している。種々の実施形態によれば、マップのエントリは、下記のうちの1以上を含む。
・物理的なフラッシュページアドレス。
・可変サイズデータ項目に対するフラッシュページ内のオフセット。
・可変サイズデータ項目の長さ。
・他の制御情報。
いくつかの実施形態では、たとえば、ゼロの値が所定の最小長に対応するようにオフセットすることによって、長さが符号化される。別の実施形態では、該所定の最小長よりも短くなるように圧縮されたデータは、そのサイズが少なくとも該所定の最小長になるまでパディングされる。
FIG. 9 shows selected details of one embodiment of map entry 900. According to various embodiments, the map entry includes one or more of the following:
• Physical flash page address.
• Offset within the flash page for variable size data items.
• Length of variable size data item.
-Other control information.
In some embodiments, the length is encoded, for example by offsetting a value of zero to correspond to a predetermined minimum length. In another embodiment, data compressed to be shorter than the predetermined minimum length is padded until its size is at least the predetermined minimum length.

種々の実施形態において、SRO-VFTLマップエントリはVFTLマップエントリよりも大きい。なぜなら、SRO-VFTLマップエントリは、対応するデータの全オフセット及びバイト長(バイトで表わした長さ)を格納しているからである。したがって、マップエントリがNVMに格納されるときには、それらのマップエントリのサイズを小さくすることが有利である。典型的な用途では、データは、少なくとも、ある粒度のシーケンシャルマッピングユニット及び/または1より大きな平均数のシーケンシャルマッピングユニットでもって、しばしばシーケンシャルすなわち順次に読み出され及び書き込まれ、書き込みのシーケンシャル性(順次性)を利用するマップエントリ圧縮フォーマットは、比較的安価で実施できて、高いマップ圧縮率を達成する。マップエントリの圧縮は、フラッシュページの境界を横切るまで、シーケンシャルに書き込まれたデータが同じフラッシュページに入ることによってさらに支援される。図10は、種々の圧縮されたマップエントリの1実施形態の選択された細部を示しており、それらは、非圧縮(1010)を含み、以前のマップエントリ(1020)と同じフラッシュページアドレス(1020)を有し、以前のマップエントリと同じフラッシュページアドレスであって、以前のデータが終了したオフセットで開始するフラッシュページアドレス(1030)を有し、及び、以前のマップエントリと同じフラッシュページアドレスであって、以前のデータが終了したオフセットで開始し、かつ以前のマップエントリと同じ長さを有するフラッシュページアドレス(1040)を含む。   In various embodiments, the SRO-VFTL map entry is larger than the VFTL map entry. This is because the SRO-VFTL map entry stores the total offset and byte length (length expressed in bytes) of the corresponding data. Therefore, when map entries are stored in NVM, it is advantageous to reduce the size of those map entries. In typical applications, data is often read and written, at least with a granularity of sequential mapping units and / or an average number of sequential mapping units greater than one, often sequential and sequential. The map entry compression format that utilizes the same) can be implemented relatively inexpensively and achieves a high map compression rate. Map entry compression is further aided by the sequentially written data entering the same flash page until the flash page boundary is crossed. FIG. 10 shows selected details of one embodiment of various compressed map entries, including uncompressed (1010) and the same flash page address (1020) as the previous map entry (1020). ), Has the same flash page address as the previous map entry, has a flash page address (1030) starting at the offset at which the previous data ended, and has the same flash page address as the previous map entry And includes a flash page address (1040) starting at the offset at which the previous data ended and having the same length as the previous map entry.

多レベルのマップを有するいくつかの実施形態では、(リーフレベルなどの)より下位のレベルのマップページのキャッシュが維持される。キャッシュされたマップページは、非圧縮形態であり、プロセッサによって高速にアクセスされることができる。マップページが(NVMやDRAMなどから)キャッシュ内に移動させられるときは、それらのマップページは非圧縮である(すなわち圧縮されていない)。マップページが(たとえば変更されたために)キャッシュからフラッシュ(またはクリア)されるときは、それらのマップページは(NVMなどに)格納するために圧縮される。マップページの一部または全てをDRAMに格納することによって待ち時間を短くするために該DRAMを使用する種々の実施形態によれば、該DRAM内のマップページは、圧縮された形態と、非圧縮の形態(すなわち圧縮されていない形態)と、選択的に圧縮された形態もしくは選択的に非圧縮の形態と、DRAM内のマップページの圧縮バージョン(すなわちそれらのマップページを圧縮したもの)にアクセスするために使用される間接指定テーブル(indirection table:インダイレクションテーブルともいう)を有する形態とのうちの1以上の形態で格納される。   In some embodiments with multiple levels of maps, a cache of lower level map pages (such as leaf levels) is maintained. Cached map pages are in uncompressed form and can be accessed at high speed by the processor. When map pages are moved into the cache (from NVM, DRAM, etc.), they are uncompressed (ie, uncompressed). When map pages are flushed (or cleared) from the cache (for example because they have changed), they are compressed for storage (such as in NVM). According to various embodiments that use DRAM to reduce latency by storing part or all of the map page in DRAM, the map page in the DRAM can be in compressed form and uncompressed. Access (ie uncompressed) forms, selectively compressed or selectively uncompressed forms, and compressed versions of map pages in DRAM (ie compressed versions of those map pages) Stored in one or more of the forms having an indirection table (also referred to as an indirection table).

いくつかの実施形態では、ホスト書き込みコマンドのホスト書き込みデータは、該データが到着するときにオプションとして及び/または選択的に圧縮され、及び、(オンチップメモリなどの)ローカルメモリにFIFO類似のやり方で格納される。たとえば、いくつかの実施形態では、ホスト書き込みデータは、ファームウェアデータ構造、フラッシュ統計(flash statistics)、マップの1以上のページを保持するキャッシュなどのマップの一部、再利用読み出しデータを含むNVMからの読み出しデータ、NVMに書き込まれるデータのヘッダー、ファームウェアコード、及び他の使用形態と共に、統合バッファ(たとえば、図12のUBUF)に格納される(統合バッファ(unified buffer)はユニファイドバッファともいう)。他の実施形態では、1以上の専用のメモリ(記憶装置)が、SSDの種々の局所的格納の必要性のために使用される。   In some embodiments, the host write data of the host write command is optionally and / or selectively compressed when the data arrives, and a FIFO-like manner in local memory (such as on-chip memory) Stored in For example, in some embodiments, host write data is from an NVM that includes firmware data structures, flash statistics, a portion of a map such as a cache that holds one or more pages of the map, and reclaimed read data. Stored in a unified buffer (for example, UBUF in FIG. 12), together with a read data, a header of data written to NVM, firmware code, and other usage patterns (unified buffer is also referred to as a unified buffer) . In other embodiments, one or more dedicated memories (storage devices) are used for various local storage needs of the SSD.

ホストから到来するデータのマッピングユニットの各々について、SSDの制御プロセッサ(たとえば、図12のCPU)に、それぞれのマッピングユニットアドレス、それぞれのローカルメモリアドレス、及び/または、可変サイズ(たとえば圧縮されている)ホストデータのそれぞれのマッピングユニットのそれぞれの長さ、のうちの1以上が通知される。制御プロセッサは、フラッシュページの書き込み順、及び、フラッシュページの各々で利用可能な非ECCバイトの総数を決定できるようになっている。制御プロセッサは、フラッシュページのうちの所与のフラッシュページで利用できる非ECCバイトの総数にしたがって、該所与のフラッシュページに配置されているヘッダーの量及びデータの量を決定できるようになっている。たとえば、制御プロセッサは、該所与のフラッシュページのヘッダーを累算し(及び、これまでに使用されたヘッダーのバイト数を追跡ないし把握し)、該所与のフラッシュページが一杯になるまで、マッピングユニットの可変サイズのデータ及びヘッダーを該所与のフラッシュページに一つずつ追加する。該所与のフラッシュページが一杯になると、該所与のフラッシュページに追加されたマッピングユニットの最後のマッピングユニットのデータの最後の部分は、該所与のフラッシュページに収まらなかった可能性があり、そのように収まらなかった場合には、該最後の部分は、該フラッシュページに後続するフラッシュページのデータ完了部分として使用され、これによって、該後続するフラッシュページにおいて新しいヘッダー及びデータ用に利用できる非ECCバイトの総数が少なくなる。   For each mapping unit of data coming from the host, the SSD's control processor (eg, the CPU of FIG. 12) is assigned a respective mapping unit address, a respective local memory address, and / or a variable size (eg, compressed). ) One or more of the respective lengths of the respective mapping units of the host data are notified. The control processor can determine the write order of the flash pages and the total number of non-ECC bytes available on each flash page. The control processor can now determine the amount of headers and data placed on a given flash page according to the total number of non-ECC bytes available on the given flash page of the flash page. Yes. For example, the control processor accumulates the header for the given flash page (and keeps track of the number of bytes in the header used so far) until the given flash page is full, Add the variable size data and header of the mapping unit one by one to the given flash page. When the given flash page is full, the last part of the data of the last mapping unit of the mapping unit added to the given flash page may not fit on the given flash page If not, the last part is used as the data completion part of the flash page following the flash page, so that it can be used for new headers and data in the subsequent flash page The total number of non-ECC bytes is reduced.

特定の時点において、1以上のフラッシュページをホスト書き込みデータで一杯にすることができ、1以上のフラッシュページを再利用データで一杯にすることができる。たとえば、「ホット」データ(ホストからのフレッシュなデータ)及び「コールド」データ(再利用データ)で満たされた少なくとも2つのバンド(FIFO類似の一連のRblock)がある。この例を続けると、種々の実施形態において、ホスト書き込みデータを、ホットバンドまたはコールドバンドのどちらかに送ることができ、再利用データを、ホットバンドまたはコールドバンドのどちらかに送ることができる。   At a particular point in time, one or more flash pages can be filled with host write data and one or more flash pages can be filled with reuse data. For example, there are at least two bands (a FIFO-like series of Rblocks) filled with “hot” data (fresh data from the host) and “cold” data (reuse data). Continuing with this example, in various embodiments, host write data can be sent to either the hot band or the cold band, and the reuse data can be sent to either the hot band or the cold band.

制御プロセッサは、一連のそれぞれのマッピングユニットアドレス、ローカルメモリアドレス及び長さを、下記のうちの1以上に変換できるようになっている。
・フラッシュページのヘッダー部分としてフラッシュページに書き込まれる一連のヘッダー。
・フラッシュページのユーザーデータ部分として該フラッシュページに書き込まれる、ローカルメモリの連続する部分(シーケンシャルな部分)の最初の(または第1の)開始アドレス及び最初の(または第1の)長さ。
・少なくとも1つのマッピングユニットのデータの少なくとも一部を含むフラッシュページのユーザーデータ部分。
・後続のフラッシュページのユーザーデータ完了部分として該後続のフラッシュページに書き込まれる、ローカルメモリの連続する部分(シーケンシャルな部分)の2番目の(または第2の)開始アドレス及び2番目の(または第2の)長さ。
・1つのマッピングユニットのデータの一部を含むかまたは空であるユーザーデータ完了部分。
・フラッシュページに書き込まれるゼロ以上のパディングバイトの数(または該パディングバイト。ここで、パディングバイトは、たとえば、ユーザーデータ完了部分が空で、かつ、フラッシュページが一杯ではない場合に使用される。
制御プロセッサは、一連のそれぞれのマッピングユニットアドレス、ローカルメモリアドレス及び長さを、再フォーマットによって一連のヘッダーに簡単に変換できるようになっており、及び、少数のダイレクトメモリアクセス(DMA)コマンドを生成して、フラッシュページを構成する部分(一連のヘッダー、以前のフラッシュページの完了部分、ユーザーデータ部分、及び任意のパディングバイト)をNVMに転送できるようになっている点で有利である。
The control processor is adapted to convert each series of mapping unit addresses, local memory addresses and lengths to one or more of the following:
A series of headers that are written on the flash page as the flash page header.
The first (or first) start address and the first (or first) length of successive portions (sequential portions) of local memory that are written to the flash page as the user data portion of the flash page.
A user data portion of a flash page containing at least a portion of the data of at least one mapping unit
The second (or second) start address and the second (or second) start address of the successive portion (sequential portion) of local memory to be written to the subsequent flash page as the user data completion portion of the subsequent flash page 2) length.
A user data completion part that contains part of the data of one mapping unit or is empty.
The number of zero or more padding bytes written to the flash page (or the padding bytes, where the padding bytes are used, for example, when the user data completion portion is empty and the flash page is not full).
The control processor can easily convert each series of mapping unit addresses, local memory addresses and lengths into a series of headers by reformatting, and generate a small number of direct memory access (DMA) commands Thus, it is advantageous in that a part constituting a flash page (a series of headers, a completed part of a previous flash page, a user data part, and an arbitrary padding byte) can be transferred to the NVM.

種々の実施形態において、ホスト書き込みデータの圧縮をオプションとして及び/または選択的に行うことができる。第1の例では、ホスト書き込みコマンドの情報が圧縮を選択的に可能にする。第2の例では、圧縮は、ホスト書き込みコマンドの論理ブロックアドレスの関数として選択的に可能にされる。第3の例では、圧縮は、ホスト書き込みデータの圧縮によって該ホスト書き込みデータのサイズが小さくならなかった場合には、選択的に無効(不能)にされる。圧縮が可能にされない場合には、ホスト書き込みデータは非圧縮で格納される。種々の実施形態によれば、マップのエントリは、マップの各エントリ内のそれぞれのビット及び/または各マップエントリに格納されている長さの値によって対応するデータが圧縮されているか圧縮されていないかを示す。たとえば、マッピングユニットが4KBの場合には、マップエントリにおける4KBの長さは、該マップエントリの関連するデータが圧縮されていないことを示しており、一方、4KBより小さい長さは、該関連するデータが圧縮されていることを示している。   In various embodiments, host write data compression can be optionally and / or selectively performed. In the first example, the host write command information selectively enables compression. In the second example, compression is selectively enabled as a function of the logical block address of the host write command. In the third example, the compression is selectively disabled (disabled) when the size of the host write data is not reduced by the compression of the host write data. If compression is not enabled, host write data is stored uncompressed. According to various embodiments, a map entry is compressed or uncompressed with corresponding data depending on the respective bit in each entry in the map and / or the length value stored in each map entry. Indicate. For example, if the mapping unit is 4 KB, a length of 4 KB in the map entry indicates that the associated data in the map entry is not compressed, while a length less than 4 KB is associated with the associated Indicates that the data is compressed.

いくつかの実施形態では、データは、再利用されるRblockを選択し、フラッシュページが書き込まれた順番で該Rblockのフラッシュページを読み出し、該フラッシュページのヘッダーを含んでいる読み出しユニットを単に処理し、マップ内のデータヘッダーであるヘッダーの各々の論理ブロックアドレス(または、等価的にはマッピングユニットアドレス)を調べて、該データが依然として有効であるかどうかを確かめ、及び、該データが依然として有効な場合には、該データが新しいフラッシュページの一部として再利用されるように該データをまとめる(アセンブルする)ために、適切な新しいヘッダー及びDMAコマンドを作成することによって、再利用される。その後、該新しいフラッシュページがNVMに書き込まれる。   In some embodiments, the data selects the Rblock to be reused, reads the Rblock flash pages in the order in which the flash pages were written, and simply processes the read unit that contains the flash page header. Check the logical block address (or equivalently the mapping unit address) of each header that is a data header in the map to see if the data is still valid, and the data is still valid In some cases, the data is reused by creating appropriate new headers and DMA commands to assemble the data so that it can be reused as part of a new flash page. The new flash page is then written to NVM.

図11は、不揮発性メモリを読み出すフローチャート1100である。非SRO-VFTLとは対照的に、読み出しユニット内(またはフラッシュページ内)のヘッダーは、読み出しデータを取り出すのに必要ではない。非SRO-VFTLとSRO-VFTLの両方とも、可変サイズのデータにアクセスできるようになっており、及び、所望の読み出しデータを含む読み出しユニットにアクセスすることだけを要するようになっている点で有利である。   FIG. 11 is a flowchart 1100 for reading the nonvolatile memory. In contrast to non-SRO-VFTL, a header in the read unit (or in a flash page) is not necessary to retrieve read data. Both non-SRO-VFTL and SRO-VFTL are advantageous in that they allow access to variable-size data and only require access to the read unit that contains the desired read data. It is.

いくつかの実施形態では、制御プロセッサ及び/または種々のハードウェアユニットは、ホストから、論理ブロックアドレス(LBA)を含む読み出しコマンドを受け取った(ステップ1110)ことに応答して、下記のうちの1以上を実行できるようになっている。
・該論理ブロックアドレスをマッピングユニットアドレスに変換する(ステップ1114)。
・複数のマップエントリを含むマップ内のマッピングユニットアドレスを調べて、それらのマップエントリのうちの関連する1つのマップエントリを決定する(ステップ1118)。
・該関連するマップエントリのそれぞれのフラッシュページアドレスを取り出して(ステップ1122)、関連するフラッシュページが、フラッシュページキャッシュ内にあるか、または、NVMから読み出す必要があるかを判定する(ステップ1130)。
・該関連するマップエントリからそれぞれのオフセット及び長さを取り出し、該それぞれのオフセット及び長さにしたがって、
・該関連するフラッシュページ内でアクセスする複数の読み出しユニットの数(または番号)と、
・該アクセスされた読み出しユニットのフラッシュページ内の読み出しユニットオフセット及び全読み出しユニット長(読み出しユニット全体の長さ)と、
・該アクセスされた読み出しユニットのデコード(復号)されたバージョンから、マッピングユニットアドレスに関連付けられているデータを取り出して処理する(たとえば(圧縮を)解凍する)ためのDMAコマンド
を決定する(ステップ1126)。
・該関連するフラッシュページがフラッシュページキャッシュ内にないと判定したことに応答して、NVMから該関連するフラッシュページの該アクセスされた読み出しユニットを読み出し(ステップ1134)、該アクセスされた読み出しユニットに対して誤り訂正復号(誤り訂正デコーディング)を実行して(ステップ1138)、訂正されたデータを生成する。
・該関連するマップエントリのそれぞれのオフセット及び長さにしたがって、該訂正されたデータ内の関連付けられたデータを取り出して、該取り出したデータを解凍する(ステップ1142)。
・読み出しコマンドに応答して、該解凍されたデータをホストに提供する(ステップ1146)。
ランダム読み出しの場合に典型的には、関連付けられたデータを読み出すために関連するフラッシュページ内でアクセスする読み出しユニット(の数)は、該関連するフラッシュページ内の全ての読み出しユニットより少ない。さらに、関連付けられたデータが可変サイズであるため、最初の(または第1の)論理ブロックアドレスを指示する最初の(または第1の)読み出しコマンドに対する、関連するフラッシュページ内でアクセスする読み出しユニットの数(または番号)は、2番目の(または第2の)論理ブロックアドレスを指示する2番目の(または第2の)読み出しコマンドに対する、関連するフラッシュページ内でアクセスする読み出しユニットの数(または番号)とは異なり、該2番目の(または第2の)論理ブロックアドレスは、該最初の(または第1の)論理ブロックアドレスとは異なる。いくつかの実施形態では、関連するフラッシュページ内でアクセスする(数の)読み出しユニットだけが、該関連するフラッシュページから読み出される。すなわち、関連付けられたデータの一部を含む読み出しユニットのうちの(少なくともいくつかの)読み出しユニットだけが、該関連付けられたデータにアクセスするために読み出される。
In some embodiments, in response to receiving a read command that includes a logical block address (LBA) from the host (step 1110), the control processor and / or various hardware units can receive one of the following: The above can be executed.
Convert the logical block address to a mapping unit address (step 1114).
Examine the mapping unit address in a map that includes multiple map entries to determine one associated map entry of those map entries (step 1118).
Retrieve each flash page address of the associated map entry (step 1122) to determine if the associated flash page is in the flash page cache or needs to be read from NVM (step 1130) .
Take each offset and length from the associated map entry and according to the respective offset and length,
The number (or number) of multiple read units accessed in the associated flash page;
The read unit offset and the total read unit length in the flash page of the accessed read unit (the total length of the read unit);
Determine a DMA command to retrieve (eg, decompress) (compress (compress)) the data associated with the mapping unit address from the decoded version of the accessed read unit. ).
In response to determining that the associated flash page is not in the flash page cache, the accessed read unit of the associated flash page is read from NVM (step 1134) and the accessed read unit is Error correction decoding (error correction decoding) is executed on the data (step 1138) to generate corrected data.
Retrieve the associated data in the corrected data according to the respective offset and length of the associated map entry and decompress the retrieved data (step 1142).
In response to the read command, provide the decompressed data to the host (step 1146).
In the case of random reads, typically the number of read units accessed in the associated flash page to read the associated data is less than all the read units in the associated flash page. In addition, because the associated data is of variable size, the read unit accessing in the associated flash page for the first (or first) read command that points to the first (or first) logical block address. The number (or number) is the number (or number) of read units accessed in the associated flash page for the second (or second) read command that points to the second (or second) logical block address. ), The second (or second) logical block address is different from the first (or first) logical block address. In some embodiments, only the (number of) read units that access within the associated flash page are read from the associated flash page. That is, only (at least some) of the read units that contain a portion of the associated data are read to access the associated data.

図12は、SSDコントローラ1200の1実施形態の選択された細部を示す。いくつかの実施形態では、SSDコントローラ1200は、SRO-VFTLを実施できるようになっている。図12に示すように、ホストインターフェース(HIF)は、SerDes(サーデス)などのI/O受信機を介して、読み出し及び書き込みコマンドなどのコマンドを受信し、書き込みデータを受信し、及び読み出しデータを送信する。コマンドは、共有メモリ(OpRAM)を介してCPUに送られる。CPUは、それらのコマンドを解釈して、共有メモリ(OpRAM)を介してSSDコントローラの他の部分を制御する。たとえば、CPUは、共有メモリ(OpRAM)を介して、DMAコマンドを送り、及び、Host Receive DataPath(HDRx:ホスト受信データパス)やFlash Transmit Datapath(FDTx:フラッシュ送信データパス)などの種々のデータパス送受信ユニットから応答を受け取る。   FIG. 12 shows selected details of one embodiment of the SSD controller 1200. In some embodiments, the SSD controller 1200 is capable of implementing SRO-VFTL. As shown in FIG. 12, the host interface (HIF) receives commands such as read and write commands, receives write data, and receives read data via an I / O receiver such as SerDes. Send. The command is sent to the CPU via shared memory (OpRAM). The CPU interprets these commands and controls the other parts of the SSD controller via shared memory (OpRAM). For example, the CPU sends DMA commands through shared memory (OpRAM) and various data paths such as Host Receive DataPath (HDRx) and Flash Transmit Datapath (FDTx) Receives a response from the transceiver unit.

ホストインターフェース(HIF)からの書き込みデータは、Host Receive DataPath(HDRx)を介して統合バッファ(UBUF)へと送られる。種々の実施形態において、Host Receive DataPath(HDRx)は、ホスト書き込みデータを、オプションとして及び/または選択的に圧縮し及び/または暗号化するためのロジック(論理回路)を備える。この場合、オプションとして及び/または選択的に圧縮された及び/または暗号化されたホスト書き込みデータは、統合バッファ(UBUF)から、Flash Transmit Datapath(FDTx)及びジェネリックフラッシュインターフェース(GAFI:generic flash interface)を介してNVMへと送られる。種々の実施形態において、Flash Transmit Datapath(FDTx)は、暗号化及び/またはスクランブリング(scrambling)及び/または誤り訂正符号化を実行するためのロジック(論理回路)を備える。ホスト読み出しコマンドに応答して、データは、ジェネリックフラッシュインターフェース(GAFI)を介してNVMから読み出されて、Flash Receive Datapath(FDRx:フラッシュ受信データパス)を介して統合バッファ(UBUF)に送られる。種々の実施形態において、Flash Receive Datapath(FDRx)は、誤り訂正復号化及び/または暗号解読及び/またはデスクランブリング(de-scrambling。スクランブリングの解除)の機能を有している。他の実施形態では、別個の誤り訂正復号器(LDPC符号を実施するためのLDPC-D)が、FlashReceive Datapath(FDRx)によって統合バッファ(UBUF)に格納された「生の」データに作用できるようになっている。この場合、統合バッファ(UBUF)内の復号された読み出しデータは、Host Transmit Datapath(HDTx:ホスト送信データパス)を介してホストインターフェース(HIF)に送られる。種々の実施形態において、Host Transmit Datapath(HDTx)は、復号された読み出しデータを、オプションとして及び/または選択的に、暗号解読し及び/または解凍するためのロジック(論理回路)を備える。いくつかの実施形態では、RASP(RAID-like And Soft-decision Processing:RAID類似及び軟判定処理)ユニットが、NVMに格納されているホスト書き込みデータ及び/またはシステムデータを追加的に保護するためのRAID類似の冗長性を提供し、及び/または、LDPC-Dと共に使用するための軟判定処理を実行できるようになっている。   Write data from the host interface (HIF) is sent to the unified buffer (UBUF) via the Host Receive DataPath (HDRx). In various embodiments, Host Receive DataPath (HDRx) comprises logic (logic circuitry) for optionally and / or selectively compressing and / or encrypting host write data. In this case, optionally and / or selectively compressed and / or encrypted host write data is transferred from the unified buffer (UBUF) to the Flash Transmit Datapath (FDTx) and generic flash interface (GAFI). Sent to NVM via. In various embodiments, the Flash Transmit Datapath (FDTx) comprises logic (logic circuitry) for performing encryption and / or scrambling and / or error correction coding. In response to a host read command, data is read from NVM via a generic flash interface (GAFI) and sent to a unified buffer (UBUF) via a Flash Receive Datapath (FDRx). In various embodiments, the Flash Receive Datapath (FDRx) has error correction decoding and / or decryption and / or descrambling (de-scrambling) functions. In other embodiments, a separate error correction decoder (LDPC-D for implementing LDPC codes) can operate on the “raw” data stored in the unified buffer (UBUF) by the FlashReceive Datapath (FDRx). It has become. In this case, the decoded read data in the unified buffer (UBUF) is sent to the host interface (HIF) via the Host Transmit Datapath (HDTx). In various embodiments, the Host Transmit Datapath (HDTx) comprises logic (logic circuitry) for optionally and / or selectively decrypting and / or decompressing the decrypted read data. In some embodiments, a RAID-like And Soft-decision Processing (RASP) unit may additionally protect host write data and / or system data stored in NVM. RAID-like redundancy is provided and / or soft decision processing for use with LDPC-D can be performed.

種々の実施形態によれば、制御プロセッサの処理はいずれも、1以上のCPUのうちの任意のCPU、及び/または、1以上のハードウェアユニット(ハードウェア装置)、及び/または、それらの任意の組み合わせによって実行される。たとえば、書き込みについては、一連のそれぞれのマッピングユニットアドレス、ローカルメモリアドレス及び長さの一連のヘッダーへの変換は、該一連のヘッダーのフォーマットと同じ及び/またはそれに類似のフォーマット(形式)で、該一連のそれぞれのマッピングユニットアドレス、ローカルメモリアドレス及び長さを提供するハードウェアによって支援される。   According to various embodiments, any processing of the control processor may be any CPU of one or more CPUs and / or one or more hardware units (hardware devices) and / or any of them. It is executed by a combination of For example, for writing, the conversion of a series of respective mapping unit addresses, local memory addresses and lengths into a series of headers may be in the same and / or similar format as the series of headers. Supported by hardware providing a series of respective mapping unit addresses, local memory addresses and lengths.

種々の実施形態によれば、不揮発性メモリに結合されたSSDコントローラは、下記のうちの1以上を使用できるようになっている。
・従来のFTL。
・可変サイズのFTL。
・最適化された可変サイズのFTLのシーケンシャルリード(順次読み出し)。
・不揮発性メモリの異なる物理的部分における上記の任意の組み合わせ。
・SSDコントローラの論理アドレス空間の異なる論理的部分における上記の任意の組み合わせ。
・不揮発性メモリに対する生の物理的アクセス(raw physical access。直接な物理的アクセス)。
・SSDコントローラに結合されたホストの制御下における上記の任意の組み合わせ。
According to various embodiments, an SSD controller coupled to a non-volatile memory can use one or more of the following.
・ Conventional FTL.
-Variable size FTL.
-Sequential read (sequential read) of optimized variable size FTL.
Any combination of the above in different physical parts of the non-volatile memory.
Any combination of the above in different logical parts of the logical address space of the SSD controller.
• Raw physical access to non-volatile memory.
Any combination of the above under the control of a host coupled to the SSD controller.

種々の実施形態によれば、ホスト書き込みデータは、NVMに書き込まれる前にオプションとして暗号化され、NVMから読み出された後に解読(暗号解除)される。他の実施形態では、暗号化は、ホスト書き込みデータの圧縮後に行われ、解読は、ホストに返すために読み出されているデータの解凍の前に行われる。   According to various embodiments, host write data is optionally encrypted before being written to NVM and decrypted (decrypted) after being read from NVM. In other embodiments, encryption is performed after compression of host-written data and decryption is performed before decompression of data being read for return to the host.

例示した実施形態はSSDを用いているが、本明細書及び/または図面に記載されている技術は、一般的に、他のI/Oデバイス、及び/またはHDDなどのデータ記憶装置にも適用できる。   Although the illustrated embodiments use SSDs, the techniques described in this specification and / or drawings are generally applicable to other I / O devices and / or data storage devices such as HDDs. it can.

例示的な実施形態
詳細な説明のイントロダクションに続いて、一群の例示的な実施形態を示すが、それらの実施形態は、少なくともいくつかの「EC」(例の組み合わせ)のように明示的に列挙されたものを含み、本明細書及び/または図面に記載されている概念に従う種々の実施形態のタイプの追加の説明を提供するが、それらの例は、相互排他的であること、網羅的であること、及び、それらの例に限定ことのいずれも意図していない。本発明は、それらの例示的な実施形態には限定されず、特許請求の範囲及びそれの等価物の範囲内の全て可能性のある修正及び変更を包含する。
Exemplary Embodiments Following an introduction to the detailed description, a group of exemplary embodiments are shown, which are explicitly listed as at least some “ECs” (combinations of examples). Providing additional descriptions of various types of embodiments in accordance with the concepts described herein and / or in the drawings, but the examples are mutually exclusive and exhaustive. Neither intended nor limited to those examples. The invention is not limited to those exemplary embodiments, but includes all possible modifications and changes within the scope of the claims and their equivalents.

EC1)
方法であって、
I/Oデバイスにおいて、ホストを介してI/Oデバイスインターフェースに送られた読み出し要求を受け取るステップであって、該読み出し要求は、前記I/Oデバイスの不揮発性メモリから、該読み出し要求の論理ブロックアドレスに対応するデータを読み出すための要求である、ステップと、
前記読み出し要求を受け取ったことに応答して、
マップの複数のエントリのうちの特定のエントリを読み出して、前記不揮発性メモリの複数のページのうちの特定のページの物理アドレスと、前記読み出し要求の前記論理ブロックアドレスに対応するデータの書き込みに応答して以前に格納された圧縮データ(圧縮されているデータ)に対する前記特定のページ内のオフセットと、前記圧縮データのバイト長とを取得するステップであって、前記特定のマップエントリは、前記読み出し要求の前記論理ブロックアドレスに関連付けられている、ステップと、
前記圧縮データに対する前記特定のページ内のオフセット及び前記圧縮データのバイト長を、前記特定のページ内の複数の読み出しユニットのうちの最初の(または第1の)読み出しユニットのアドレス、及び、前記特定のページから読み出される読み出しユニットの数(または番号)に変換するステップと、
前記特定のページから前記数(または前記番号)の読み出しユニットだけを読み出すステップと、
前記特定のページから読み出した前記読み出しユニットの各々に対して誤り訂正復号(処理)を実施して、訂正されたデータを得るステップと、
前記圧縮データに対する前記特定のページ内のオフセット、及び、前記圧縮データのバイト長にしたがって、前記訂正されたデータから前記圧縮データを取り出すステップと、
前記圧縮データを解凍してリターンデータ(ホストに返すデータ)を生成するステップと、
前記リターンデータを前記ホストに返すステップ
を実行するステップ
を含む方法。
EC1)
A method,
In the I / O device, receiving a read request sent to the I / O device interface via the host, the read request from the non-volatile memory of the I / O device. A step that is a request for reading data corresponding to an address; and
In response to receiving the read request,
Reads a specific entry from the plurality of entries in the map and responds to writing of data corresponding to the physical address of the specific page of the plurality of pages of the nonvolatile memory and the logical block address of the read request Obtaining the offset in the specific page relative to the previously stored compressed data (compressed data) and the byte length of the compressed data, wherein the specific map entry is the read A step associated with the logical block address of the request;
The offset in the specific page and the byte length of the compressed data with respect to the compressed data, the address of the first (or first) read unit among the plurality of read units in the specific page, and the specific Converting to the number (or number) of read units read from a page of
Reading only the number (or number) of read units from the particular page;
Performing error correction decoding (processing) on each of the read units read from the specific page to obtain corrected data;
Retrieving the compressed data from the corrected data according to an offset within the particular page with respect to the compressed data and a byte length of the compressed data;
Decompressing the compressed data to generate return data (data to be returned to the host);
Returning the return data to the host.

EC2)
方法であって、
I/Oデバイスにおいて、ホストを介してI/Oデバイスインターフェースに送られた読み出し要求を受け取るステップであって、該読み出し要求は、前記I/Oデバイスの不揮発性メモリから、該読み出し要求の論理ブロックアドレスに対応するデータを読み出すための要求である、ステップと、
前記読み出し要求を受け取ったことに応答して、
マップの複数のエントリのうちの特定のエントリを読み出して、前記不揮発性メモリの複数のページのうちの特定のページの物理アドレスと、前記読み出し要求の前記論理ブロックアドレスに対応するデータの書き込みに応答して以前に格納された圧縮データ(圧縮されているデータ)に対する前記特定のページ内のオフセットと、前記圧縮データのバイト長とを取得するステップであって、前記特定のマップエントリは、前記読み出し要求の前記論理ブロックアドレスに関連付けられている、ステップと、
前記圧縮データに対する前記特定のページ内のオフセット及び前記圧縮データのバイト長を、前記特定のページ内の複数の読み出しユニットのうちの最初の(または第1の)読み出しユニットのアドレス、及び、前記特定のページから読み出される読み出しユニットの数(または番号)に変換するステップと、
前記特定のページから前記数以上で、前記特定のページ内の全ての読み出しユニットよりは少ない数の読み出しユニットを読み出すステップと、
前記特定のページから読み出した前記読み出しユニットの各々に対して誤り訂正復号を実施して、訂正されたデータを得るステップと、
前記圧縮データに対する前記特定のページ内のオフセット、及び、前記圧縮データのバイト長にしたがって、前記訂正されたデータから前記圧縮データを取り出すステップと、
前記圧縮データを解凍してリターンデータ(ホストに返すデータ)を生成するステップと、
前記リターンデータを前記ホストに返すステップ
を実行するステップ
を含む方法。
EC2)
A method,
In the I / O device, receiving a read request sent to the I / O device interface via the host, the read request from the non-volatile memory of the I / O device. A step that is a request for reading data corresponding to an address; and
In response to receiving the read request,
Reads a specific entry from the plurality of entries in the map and responds to writing of data corresponding to the physical address of the specific page of the plurality of pages of the nonvolatile memory and the logical block address of the read request Obtaining the offset in the specific page relative to the previously stored compressed data (compressed data) and the byte length of the compressed data, wherein the specific map entry is the read A step associated with the logical block address of the request;
The offset in the specific page and the byte length of the compressed data with respect to the compressed data, the address of the first (or first) read unit among the plurality of read units in the specific page, and the specific Converting to the number (or number) of read units read from a page of
Reading more than the number of read units from the specific page and less than all the read units in the specific page;
Performing error correction decoding on each of the read units read from the specific page to obtain corrected data;
Retrieving the compressed data from the corrected data according to an offset within the particular page with respect to the compressed data and a byte length of the compressed data;
Decompressing the compressed data to generate return data (data to be returned to the host);
Returning the return data to the host.

EC3)読み出される読み出しユニットの数が、前記特定のページ内の全ての読み出しユニットの数よりも少ない、上記EC1またはE2の方法。   EC3) The method of EC1 or E2, wherein the number of read units to be read is less than the number of all read units in the particular page.

EC4)前記圧縮データに対する前記特定のページ内のオフセット及び前記圧縮データのバイト長と、前記特定のページ内のユーザーデータの量との組み合わせにしたがって、前記圧縮データの少なくとも一部が、前記不揮発性メモリの前記ページに続くページの1以上の読み出しユニットに存在するか否かを判定するステップをさらに含む、上記EC1またはEC2の方法。   EC4) According to a combination of the offset in the specific page with respect to the compressed data and the byte length of the compressed data, and the amount of user data in the specific page, at least a part of the compressed data is non-volatile The method of EC1 or EC2, further comprising the step of determining whether one or more read units of a page following the page of memory are present.

EC5)第2の処理ノードにおけるグローバルな冗長データの更新に応答して、該第2の処理ノードのそれぞれのローカルな冗長度計算ユニットが、前記第2の処理ノードのそれぞれのディスクのうちの少なくともいくつかに格納するために、前記グローバルな冗長データの更新のデータにしたがって、第2の冗長データを計算できるようになっている、上記EC4の方法。   EC5) In response to the global redundant data update at the second processing node, each local redundancy calculation unit of the second processing node is configured to receive at least one of the disks of the second processing node. The method of EC4, wherein the second redundant data can be calculated according to the global redundant data update data for storage in some.

EC6)前記不揮発性メモリの前記ページのうちの最初の(または第1の)ページは、第1の数の読み出しユニットを含み、前記不揮発性メモリの前記ページのうちの2番目の(または第2の)ページは、第2の数の読み出しユニットを含み、前記第1の数は前記第2の数とは異なる、上記EC1またはEC2の方法。   EC6) The first (or first) page of the pages of the non-volatile memory includes a first number of read units, and the second (or second) of the pages of the non-volatile memory. The method of EC1 or EC2 above, wherein the page comprises a second number of read units, wherein the first number is different from the second number.

EC7)前記不揮発性メモリの前記ページのうちの最初の(または第1の)ページは、第1の量のユーザーデータを含み、前記不揮発性メモリの前記ページのうちの2番目の(または第2の)ページは、第2の量のユーザーデータを含み、ユーザーデータの前記第1の量はユーザーデータの前記第2の量とは異なる、上記EC1またはEC2の方法。   EC7) The first (or first) page of the pages of the non-volatile memory includes a first amount of user data and the second (or second) of the pages of the non-volatile memory. The method of EC1 or EC2 above, wherein the page includes a second amount of user data, wherein the first amount of user data is different from the second amount of user data.

EC8)
I/Oデバイスにおいて、前記ホストを介してI/Oデバイスインターフェースに送られた書き込み要求を受け取るステップであって、該書き込み要求は、前記論理ブロックアドレスに対応するデータを書き込むための要求である、ステップと、
前記書き込み要求を受け取ったことに応答して、
前記論理ブロックアドレスに対応する前記データを圧縮して、前記論理ブロックアドレスに対応する前記データよりも小さな圧縮された書き込みデータを生成するステップと、
前記特定のページに、前記圧縮された書き込みデータの少なくとも最初の(または第1の)部分を書き込むステップと、
前記特定のエントリに、前記特定のページの物理アドレス、前記圧縮された書き込みデータに対する前記特定のページ内のオフセット、及び、前記圧縮された書き込みデータのバイト長を格納するステップ
を実施するステップ
をさらに含む、上記EC1またはEC2の方法。
EC8)
In the I / O device, receiving a write request sent to the I / O device interface via the host, the write request being a request for writing data corresponding to the logical block address. Steps,
In response to receiving the write request,
Compressing the data corresponding to the logical block address to generate compressed write data smaller than the data corresponding to the logical block address;
Writing at least a first (or first) portion of the compressed write data to the particular page;
Storing the physical address of the specific page, the offset within the specific page with respect to the compressed write data, and the byte length of the compressed write data in the specific entry; The method of EC1 or EC2 above.

EC9)
前記書き込みデータに対する要求を受け取ったことに応答して、前記特定のページにヘッダーを書き込むステップをさらに含む上記EC8の方法であって、前記ヘッダーは、前記要求の前記論理ブロックアドレスの少なくとも一部と前記圧縮データのバイト長とを含む、方法。
EC9)
The EC8 method, further comprising: writing a header to the particular page in response to receiving a request for the write data, wherein the header includes at least a portion of the logical block address of the request. And a byte length of the compressed data.

EC10)
前記論理ブロックアドレスが、複数の論理ブロックアドレスのうちの最初の(または第1の)論理ブロックアドレスであり、前記数の読み出しユニットのうちの少なくとも1つが、前記論理ブロックアドレスのそれぞれに対応する少なくともいくつかのデータを含む、上記EC1またはEC2の方法。
EC10)
The logical block address is a first (or first) logical block address of a plurality of logical block addresses, and at least one of the number of read units corresponds to at least one of the logical block addresses. The EC1 or EC2 method above, comprising some data.

EC11)前記数の読み出しユニットのうちの少なくとも1つが、前記圧縮データの一部に加えて、1以上のヘッダーを含む、上記EC1またはEC2の方法。   EC11) The method of EC1 or EC2, wherein at least one of the number of read units includes one or more headers in addition to a portion of the compressed data.

EC12)
方法であって、
I/Oデバイスにおいて、ホストを介してI/Oデバイスインターフェースに送られた読み出し要求を受け取るステップであって、該読み出し要求は、前記I/Oデバイスの不揮発性メモリから、該読み出し要求の論理ブロックアドレスに対応するデータを読み出すための要求である、ステップと、
前記読み出し要求を受け取ったことに応答して、
マップの複数のエントリのうちの特定のエントリを読み出して、前記不揮発性メモリの複数のページのうちの特定のページの物理アドレスと、前記読み出し要求の前記論理ブロックアドレスに対応するデータの書き込みに応答して以前に格納された可変サイズのデータ(以下、可変サイズのデータを可変サイズデータともいう)に対する前記特定のページ内のオフセットと、前記可変サイズデータのバイト長とを取得するステップであって、前記特定のマップエントリは、前記読み出し要求の前記論理ブロックアドレスに関連付けられている、ステップと、
前記可変サイズデータに対する前記特定のページ内のオフセット及び前記可変サイズデータのバイト長を、前記特定のページ内の複数の読み出しユニットのうちの最初の(または第1の)読み出しユニットのアドレス、及び、前記特定のページから読み出される読み出しユニットの数(または番号)に変換するステップと、
前記特定のページから前記数(または前記番号)の読み出しユニットだけを読み出すステップと、
前記特定のページから読み出した前記読み出しユニットの各々に対して誤り訂正復号を実施して、訂正されたデータを得るステップと、
前記可変サイズデータに対する前記特定のページ内のオフセット、及び、前記可変サイズデータのバイト長にしたがって、前記訂正されたデータから前記可変サイズデータを取り出すステップと、
前記取り出したデータを前記ホストに返すステップ
を実行するステップ
を含む方法。
EC12)
A method,
In the I / O device, receiving a read request sent to the I / O device interface via the host, the read request from the non-volatile memory of the I / O device. A step that is a request for reading data corresponding to an address; and
In response to receiving the read request,
Reads a specific entry from the plurality of entries in the map and responds to writing of data corresponding to the physical address of the specific page of the plurality of pages of the nonvolatile memory and the logical block address of the read request And obtaining an offset in the specific page with respect to previously stored variable size data (hereinafter, variable size data is also referred to as variable size data) and a byte length of the variable size data. The particular map entry is associated with the logical block address of the read request; and
An offset in the specific page with respect to the variable size data and a byte length of the variable size data, an address of a first (or first) read unit among a plurality of read units in the specific page, and Converting to the number (or number) of read units read from the particular page;
Reading only the number (or number) of read units from the particular page;
Performing error correction decoding on each of the read units read from the specific page to obtain corrected data;
Retrieving the variable size data from the corrected data according to an offset within the specific page with respect to the variable size data and a byte length of the variable size data;
Executing the step of returning the retrieved data to the host.

EC13)
I/Oデバイスにおいて、前記ホストを介してI/Oデバイスインターフェースに送られた書き込み要求を受け取るステップであって、該書き込み要求は、前記論理ブロックアドレスに対応する可変サイズデータ、及び前記可変サイズデータのサイズを書き込むための要求である、ステップと、
前記書き込み要求を受け取ったことに応答して、
前記特定のページに、前記可変サイズデータの少なくとも最初の(または第1の)部分を書き込むステップと、
前記特定のエントリに、前記特定のページの物理アドレス、前記可変サイズデータに対する前記特定のページ内のオフセット、及び、前記可変サイズデータのサイズに対応する該可変サイズデータのバイト長を格納するステップ
を実施するステップ
をさらに含む、上記EC1またはEC12の方法。
EC13)
In the I / O device, receiving a write request sent to the I / O device interface via the host, wherein the write request includes variable size data corresponding to the logical block address, and the variable size data A step that is a request to write the size of
In response to receiving the write request,
Writing at least a first (or first) portion of the variable-size data on the particular page;
Storing the physical address of the specific page, the offset in the specific page with respect to the variable size data, and the byte length of the variable size data corresponding to the size of the variable size data in the specific entry; The method of EC1 or EC12, further comprising the step of:

例示的な実装技術
いくつかの実施形態では、複数ノードの記憶装置または該装置の(1以上の)一部、たとえば、I/OデバイスのHDDもしくはSSDコントローラによって実行される全てのまたは一部の処理の種々の組み合わせが、コンピュータシステムによる処理と互換性のある仕様によって指定され、この場合、それらのHDDもしくはSSDコントローラは、(CPUなどの)プロセッサ、(ROCチップなどのI/Oコントローラ、及び、上記の処理の全てもしくは一部を提供するプロセッサもしくはマイクロプロセッサもしくはシステムオンチップもしくは特定用途向け集積回路もしくはハードウェアアクセラレータもしくは他の回路の一部と相互運用(ないし相互作用)できるようにされている。該仕様は、ハードウェア記述言語、回路記述、ネットリスト記述、マスク記述、もしくはレイアウト記述などの種々の記述にしたがう。例示的な記述には、Verilog、VHDL、SPICE、PSpiceなどのSPICEの変形バージョン、IBIS、LEF、DEF、GDS-II、OASIS、または他の記述が含まれる。種々の実施形態において、処理には、1以上の集積回路に含めるのに適切なロジック(論理回路)及び/または回路を生成し、検証し、または指定するための解釈、コンパイル、シミュレーション、及び合成の任意の組み合わせが含まれる。種々の実施形態によれば、集積回路の各々は、種々の技術にしたがって設計可能であり及び/または製造可能である。それらの技術には、(フィールドもしくはマスクプログラマブルゲートアレイ集積回路などの)プログラム可能な技術、(完全にもしくは部分的にセルベースの集積回路などの)セミカスタム技術、(実質的に特化された集積回路などの)フルカスタム技術、それらの任意の組み合わせ、または、集積回路の設計及び/または製造と互換性のある任意の他の技術が含まれる。
Exemplary Implementation Techniques In some embodiments, a multi-node storage device or part (or more) of the device, eg, all or part of the I / O device HDD or SSD controller Various combinations of processing are specified by specifications compatible with processing by a computer system, in which case their HDD or SSD controller is a processor (such as a CPU), an I / O controller (such as a ROC chip), and , Interoperable (or interacting) with a processor or microprocessor or system-on-chip or application specific integrated circuit or hardware accelerator or other circuit that provides all or part of the above processing The specification includes hardware description language, circuit description, netlist description. Follow various descriptions such as descriptions, mask descriptions, layout descriptions, etc. Exemplary descriptions include variants of SPICE such as Verilog, VHDL, SPICE, PSpice, IBIS, LEF, DEF, GDS-II, OASIS, or In various embodiments, the process may be interpreted to generate, verify, or specify logic (logic circuits) and / or circuits suitable for inclusion in one or more integrated circuits. Any combination of compilation, simulation, and synthesis, according to various embodiments, each of the integrated circuits can be designed and / or manufactured according to various techniques. Is a programmable technology (such as a field or mask programmable gate array integrated circuit) or a cell (such as a fully or partially cell-based integrated circuit). Custom techniques include (substantially specialized, such as integrated circuits) full custom technology, any combination thereof, or any other technique with a design and / or manufacture compatible with the integrated circuit.

いくつかの実施形態では、一組の命令が格納されているコンピューター可読媒体によって記述される全てもしくは一部の処理の種々の組み合わせが、1以上のプログラム命令の実行及び/または解釈によって、または、1以上のソース及び/もしくはスクリプト言語ステートメントの解釈及び/またはコンパイルによって、または、プログラミング及び/またはスクリプト言語ステートメントで表現されている、コンパイル、翻訳及び/または解釈情報によって生成されたバイナリ命令の実行によって実施される。これらのステートメントは、(C、C++、フォートラン、パスカル(Pascal)、Ada、Java、VBスクリプト、及びシェル(Shell)などの)任意の標準的なプログラミングもしくはスクリプト言語と互換性がある。それらのプログラム命令、言語ステートメント、もしくはバイナリ命令のうちの1以上は、オプションとして、1以上のコンピューター可読記憶媒体素子に格納される。種々の実施形態において、それらのプログラム命令の一部もしくは全てもしくは種々の部分は、1以上の関数、ルーチン、サブルーチン、内部(インライン)ルーチン、手続き(プロシージャ)、マクロ、もしくはそれらの一部として実現される。   In some embodiments, various combinations of all or part of the processing described by a computer-readable medium on which a set of instructions is stored may be performed by execution and / or interpretation of one or more program instructions, or By interpretation and / or compilation of one or more source and / or script language statements, or by execution of binary instructions generated by compilation, translation and / or interpretation information expressed in programming and / or script language statements To be implemented. These statements are compatible with any standard programming or scripting language (such as C, C ++, Fortran, Pascal, Ada, Java, VB Script, and Shell). One or more of the program instructions, language statements, or binary instructions are optionally stored in one or more computer readable storage media elements. In various embodiments, some or all of these program instructions, or various parts, may be implemented as one or more functions, routines, subroutines, internal (inline) routines, procedures (procedures), macros, or parts thereof. Is done.

結論
上記の説明では、単にテキスト及び図面の準備の便宜のために、いくつかの選択がされており、それらの選択は、別様であることが表示ないし示唆されていない限り、それ自体が、説明した実施形態の構造または動作に関する追加の情報を伝えるものとして解釈されるべきではない。それらの選択の例には、図面の番号付けに使用される表示の特定の編成もしくは割り当て、及び、実施形態の特徴及び要素を識別し及び参照するために使用される要素の識別情報(たとえばコールアウト(吹き出しなど)や数値表示)の特定の編成もしくは割り当てが含まれる。
Conclusion In the above description, several choices have been made, merely for the convenience of preparing text and drawings, unless such choices are shown or suggested to be otherwise, It should not be construed as conveying additional information regarding the structure or operation of the described embodiments. Examples of those choices include the specific organization or assignment of the display used to number the drawings, and the identification information of the elements (eg, calls) used to identify and refer to the features and elements of the embodiment. Includes specific organization or assignment of out (such as a balloon) or numerical display.

「を備える」もしくは「備えている」という用語は、限定されない範囲の論理的な集合を記述する抽象的概念として解釈されることが明確に意図されており、「内の」もしくは「内にある」という用語が明示的に後続していない限り、物理的な限定を表すことは意図されていない。   The terms “comprising” or “comprising” are expressly intended to be interpreted as an abstract concept describing a logical set of non-limiting scope, and are “in” or “in” It is not intended to represent physical limitation unless explicitly followed by the term "."

上記の実施形態は、説明の明確化と理解のために幾分詳細に説明されているが、本発明は、提供したそれらの細部には限定されない。本発明の多くの実施形態がある。開示されている実施形態は例示的なものであって限定的なものではない。   While the above embodiments have been described in some detail for purposes of clarity and understanding, the invention is not limited to those details provided. There are many embodiments of the present invention. The disclosed embodiments are illustrative and not restrictive.

構成、配列、及び使用に関して、上記の説明と整合する多くの変形形態が可能であり、それらは、特許請求の範囲内のものであることが理解されよう。たとえば、各構成要素ブロックにおいて、相互接続、機能ユニット、ビット幅、クロック速度、及び、使用する技術のタイプを、種々の実施形態にしたがって変更できる。相互接続及びロジック(論理回路)に付された名称は、単に例示であって、開示されている概念を限定するものとして解釈されるべきではない。フローチャート及び流れ図の処理、動作、機能要素の順番及び配列は、種々の実施形態にしたがって変更可能である。また、別様であることが明示されていない限り、指定されている値の範囲、使用されている最大値及び最小値、または、(I/Oデバイス技術のタイプ、及び、レジスタ及びバッファ内のエントリもしくはステージ(段)の数などの)他の特定の仕様は、説明した実施形態について例示したものに過ぎず、実装技術の進歩及び変化に応じて変更されることが予定されているのであって、それらに限定されるものとして解釈されるべきではない。   It will be appreciated that many variations are possible in construction, arrangement and use consistent with the above description and are within the scope of the claims. For example, in each component block, the interconnect, functional unit, bit width, clock speed, and type of technology used can be varied according to various embodiments. The names given to the interconnects and logic (logic circuits) are merely exemplary and should not be construed as limiting the disclosed concepts. The order and arrangement of the processes, operations, functional elements of the flowcharts and flowcharts can be changed according to various embodiments. Also, unless specified otherwise, ranges of values specified, maximum and minimum values used, or (type of I / O device technology and in registers and buffers Other specific specifications (such as the number of entries or stages) are merely exemplary for the described embodiments and are intended to change as packaging technology advances and changes. And should not be construed as limited thereto.

本技術分野において既知の機能的に等価な技術を、種々の構成要素、サブシステム、処理、機能、ルーチン、サブルーチン、内部(インライン)ルーチン、手続き(プロシージャ)、マクロ、または、それらの一部を実施するために説明したものの代わりに使用するこができる。また、実施形態の多くの機能的な側面は、設計上の制約、並びに、(以前はハードウェアで実現しいた機能をソフトウェアに移行するのを容易にする)高速処理化及び(以前はソフトウェアで実現していた機能をハードウェアに移行するのを容易にする)高集積密度化の技術動向に依存する実施形態の機能として、ハードウェア(たとえば、概ね専用の回路)または(たとえば、何らかのタイプのプログラムされたコントローラもしくはプロセッサを用いた)ソフトウェアにおいて選択的に実現できることが理解される。種々の実施形態における特定の変更には、異なる分割(パーティショニング)、異なる形態の要素及び構成、異なるオペレーティングシステム及び他のシステムソフトウェアの使用、異なるインターフェース規格、ネットワークプロトコル、もしくは通信リンクの使用、異なる符号化タイプの使用、及び、特定の用途の固有の工学上及び事業上の制約にしたがって、本明細書及び/または図面に開示されている概念を実施するときに予定されている他の変更が含まれる(ただし、それらには限定されない)。   Functionally equivalent techniques known in the art may be combined with various components, subsystems, processes, functions, routines, subroutines, internal (inline) routines, procedures (procedures), macros, or portions thereof. It can be used instead of the one described for implementation. In addition, many functional aspects of the embodiment include design constraints, faster processing (which makes it easier to migrate functions previously implemented in hardware) and software (formerly in software). Functions of embodiments that rely on high integration density technology trends that facilitate migrating the functions that have been implemented to hardware include hardware (eg, generally dedicated circuitry) or (eg, some type of It will be appreciated that it can be selectively implemented in software (using a programmed controller or processor). Specific changes in various embodiments include different partitioning, different forms of elements and configurations, use of different operating systems and other system software, use of different interface standards, network protocols, or communication links, different Depending on the use of the coding type and the specific engineering and business constraints of the particular application, there are other changes that are envisaged when implementing the concepts disclosed herein and / or the drawings. Included (but not limited to).

いくつかの実施形態を、説明した実施形態の多くの側面を最小限度で実施するのに必要なものを十分に超える細部及び環境状況とともに説明した。当業者には、いくつかの実施形態では、開示されている構成要素もしくは特徴が、残りの要素間の基本的な協働を変更することなく省かれていることが理解されよう。したがって、開示されている細部の多くは、説明した実施形態の種々の側面を実施するのに必要ではない。残りの要素が先行技術と区別できる限度において、省略された構成要素及び特徴は、本明細書及び/または図面に開示されている概念を制限するものではない。   Several embodiments have been described with details and environmental conditions well beyond those necessary to implement many aspects of the described embodiments to a minimum. Those skilled in the art will appreciate that in some embodiments, disclosed components or features are omitted without changing the basic cooperation between the remaining elements. Accordingly, many of the details disclosed are not required to implement various aspects of the described embodiments. To the extent that the remaining elements are distinguishable from the prior art, omitted components and features do not limit the concepts disclosed herein and / or the drawings.

設計におけるそのような全ての変更は、説明した実施形態によって提供される教示に対するわずかな変更に過ぎない。本明細書及び/または図面に記載されている実施形態は、他のコンピューティング及びネットワーキングアプリケーションに広く適用可能であり、説明した実施形態の特定の用途もしくは産業には限定されないことも理解される。したがって、本発明は、特許請求の範囲に含まれる全ての可能性のある修正及び変更を含むものとして解釈されるべきである。
All such changes in design are only minor changes to the teaching provided by the described embodiments. It is also understood that the embodiments described herein and / or in the drawings are broadly applicable to other computing and networking applications and are not limited to the particular application or industry of the described embodiments. Accordingly, the present invention should be construed as including all possible modifications and variations that fall within the scope of the claims.

Claims (1)

方法であって、
I/Oデバイスにおいて、ホストを介してI/Oデバイスインターフェースに送られた読み出し要求を受け取るステップであって、該読み出し要求は、前記I/Oデバイスの不揮発性メモリから、該読み出し要求の論理ブロックアドレスに対応するデータを読み出すための要求である、ステップと、
前記読み出し要求を受け取ったことに応答して、
マップの複数のエントリのうちの特定のエントリを読み出して、前記不揮発性メモリの複数のページのうちの特定のページの物理アドレスと、前記読み出し要求の前記論理ブロックアドレスに対応するデータの書き込みに応答して以前に格納された圧縮データに対する前記特定のページ内のオフセットと、前記圧縮データのバイト長とを取得するステップであって、前記特定のマップエントリは、前記読み出し要求の前記論理ブロックアドレスに関連付けられている、ステップと、
前記圧縮データに対する前記特定のページ内のオフセット及び前記圧縮データのバイト長を、前記特定のページ内の複数の読み出しユニットのうちの最初の読み出しユニットのアドレス、及び、前記特定のページから読み出される読み出しユニットの数(または番号)に変換するステップと、
前記特定のページから前記数(または前記番号)の読み出しユニットだけを読み出すステップと、
前記特定のページから読み出した前記読み出しユニットの各々に対して誤り訂正復号を実施して、訂正されたデータを得るステップと、
前記圧縮データに対する前記特定のページ内のオフセット、及び、前記圧縮データのバイト長にしたがって、前記訂正されたデータから前記圧縮データを取り出すステップと、
前記圧縮データを解凍してリターンデータを生成するステップと、
前記リターンデータを前記ホストに返すステップ
を実行するステップ
を含む方法。
A method,
In the I / O device, receiving a read request sent to the I / O device interface via the host, the read request from the non-volatile memory of the I / O device. A step that is a request for reading data corresponding to an address; and
In response to receiving the read request,
Reads a specific entry from the plurality of entries in the map and responds to writing of data corresponding to the physical address of the specific page of the plurality of pages of the nonvolatile memory and the logical block address of the read request Obtaining the offset in the specific page relative to the previously stored compressed data and the byte length of the compressed data, wherein the specific map entry is stored in the logical block address of the read request. Associated steps, and
The offset in the specific page with respect to the compressed data and the byte length of the compressed data are read from the address of the first read unit of the plurality of read units in the specific page and the read from the specific page. Converting to the number (or number) of units;
Reading only the number (or number) of read units from the particular page;
Performing error correction decoding on each of the read units read from the specific page to obtain corrected data;
Retrieving the compressed data from the corrected data according to an offset within the particular page with respect to the compressed data and a byte length of the compressed data;
Decompressing the compressed data to generate return data;
Returning the return data to the host.
JP2014150593A 2013-08-16 2014-07-24 Sequential read optimization variable size flash translation layer Expired - Fee Related JP5978259B2 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201361866672P 2013-08-16 2013-08-16
US61/866,672 2013-08-16

Publications (3)

Publication Number Publication Date
JP2015036981A true JP2015036981A (en) 2015-02-23
JP2015036981A5 JP2015036981A5 (en) 2015-04-02
JP5978259B2 JP5978259B2 (en) 2016-08-24

Family

ID=51662509

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014150593A Expired - Fee Related JP5978259B2 (en) 2013-08-16 2014-07-24 Sequential read optimization variable size flash translation layer

Country Status (2)

Country Link
JP (1) JP5978259B2 (en)
GB (1) GB2519629A (en)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017511521A (en) * 2014-02-05 2017-04-20 ティダル システムズ, インク.Tidal Systems, Inc. Flash memory compression
JP6443571B1 (en) * 2018-02-02 2018-12-26 富士通株式会社 Storage control device, storage control method, and storage control program
JP6443572B1 (en) * 2018-02-02 2018-12-26 富士通株式会社 Storage control device, storage control method, and storage control program
JP2022545997A (en) * 2019-07-02 2022-11-02 マイクロソフト テクノロジー ライセンシング,エルエルシー hardware-based memory compression

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022213736A1 (en) * 2021-04-08 2022-10-13 华为技术有限公司 Method for writing data into solid-state hard disk

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012099937A2 (en) * 2011-01-18 2012-07-26 Lsi Corporation Higher-level redundancy information computation
JP2013545202A (en) * 2010-12-01 2013-12-19 エルエスアイ コーポレーション Dynamic high-level redundancy mode management of independent silicon devices

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6374341B1 (en) * 1998-09-02 2002-04-16 Ati International Srl Apparatus and a method for variable size pages using fixed size translation lookaside buffer entries
US7644251B2 (en) * 2005-12-19 2010-01-05 Sigmatel, Inc. Non-volatile solid-state memory controller
EP1939751A1 (en) * 2006-12-22 2008-07-02 Telefonaktiebolaget LM Ericsson (publ) Storing compressed data
KR101289931B1 (en) * 2011-09-23 2013-07-25 한양대학교 산학협력단 Method and apparatus for storing data in flash memory using address mapping with various block sizes
US8843711B1 (en) * 2011-12-28 2014-09-23 Netapp, Inc. Partial write without read-modify

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013545202A (en) * 2010-12-01 2013-12-19 エルエスアイ コーポレーション Dynamic high-level redundancy mode management of independent silicon devices
WO2012099937A2 (en) * 2011-01-18 2012-07-26 Lsi Corporation Higher-level redundancy information computation

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017511521A (en) * 2014-02-05 2017-04-20 ティダル システムズ, インク.Tidal Systems, Inc. Flash memory compression
US9927998B2 (en) 2014-02-05 2018-03-27 Tidal Systems, Inc. Flash memory compression
JP6443571B1 (en) * 2018-02-02 2018-12-26 富士通株式会社 Storage control device, storage control method, and storage control program
JP6443572B1 (en) * 2018-02-02 2018-12-26 富士通株式会社 Storage control device, storage control method, and storage control program
JP2019133577A (en) * 2018-02-02 2019-08-08 富士通株式会社 Storage controller, storage control method, and storage control program
JP2019133601A (en) * 2018-02-02 2019-08-08 富士通株式会社 Storage controller, storage control method, and storage control program
KR20190094108A (en) * 2018-02-02 2019-08-12 후지쯔 가부시끼가이샤 Storage control device, storage control method, and recording medium
KR102245113B1 (en) 2018-02-02 2021-04-26 후지쯔 가부시끼가이샤 Storage control device, storage control method, and recording medium
JP2022545997A (en) * 2019-07-02 2022-11-02 マイクロソフト テクノロジー ライセンシング,エルエルシー hardware-based memory compression
JP7438246B2 (en) 2019-07-02 2024-02-26 マイクロソフト テクノロジー ライセンシング,エルエルシー Hardware-based memory compression

Also Published As

Publication number Publication date
JP5978259B2 (en) 2016-08-24
GB201414545D0 (en) 2014-10-01
GB2519629A (en) 2015-04-29

Similar Documents

Publication Publication Date Title
US10346312B2 (en) Variable-size flash translation layer
US11449252B2 (en) Method of writing and reading data in an NVM using Lpage identification headers
US11379301B2 (en) Fractional redundant array of silicon independent elements
TWI609263B (en) Variable-size flash translation layer
JP6387231B2 (en) Management of nonvolatile memory writing and area selection
US9329991B2 (en) Translation layer partitioned between host and controller
US8949517B2 (en) Self-journaling and hierarchical consistency for non-volatile storage
US9189385B2 (en) Scalable data structures for control and management of non-volatile storage
EP2750018A2 (en) Non-volatile memory program failure recovery via redundant arrays
JP5978259B2 (en) Sequential read optimization variable size flash translation layer
TWI703499B (en) Data storage device and method for sharing memory of controller thereof
US20140317337A1 (en) Metadata management and support for phase change memory with switch (pcms)
JP2019159791A (en) Memory system

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150116

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150116

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151216

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151222

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20160322

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20160422

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160426

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

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20160623

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160725

R150 Certificate of patent or registration of utility model

Ref document number: 5978259

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees