JP5978259B2 - 順次読み出し最適化可変サイズフラッシュトランスレーションレイヤ - Google Patents
順次読み出し最適化可変サイズフラッシュトランスレーションレイヤ Download PDFInfo
- Publication number
- JP5978259B2 JP5978259B2 JP2014150593A JP2014150593A JP5978259B2 JP 5978259 B2 JP5978259 B2 JP 5978259B2 JP 2014150593 A JP2014150593 A JP 2014150593A JP 2014150593 A JP2014150593 A JP 2014150593A JP 5978259 B2 JP5978259 B2 JP 5978259B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- read
- page
- request
- specific page
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1048—Adding 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
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/08—Address circuits; Decoders; Word-line control circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/06—Address interface arrangements, e.g. address buffers
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」。
このイントロダクションは、詳細な説明をより早く理解できるようにするためにのみ設けられたものであり、本発明は、このイントロダクションで提示されている(明示的な例を含む)概念には限定されない。任意のイントロダクションのパラグラフは、当然ながら主題全体を要約したものであって、説明を網羅することも、説明されていることに限定することも意図されていない。たとえば、下記のイントロダクションは、特定の実施形態に対してのみ空間及び構成によって限定された概略情報を提供する。最終的には特許請求の範囲に含まれる実施形態を含むその他の多くの実施形態が明細書の残りの部分を通じて説明されている。
・マスターヘッダー610、Rblockヘッダー620(たとえば、Rblock内の各ブロックの最初のページ内に追加されたヘッダー)、及び、ゼロ以上の追加のパックされたヘッダー(packed header)630を含むヘッダー(ただし、Rblockヘッダーはオプションとして及び/または選択的に含まれる)。
・前のフラッシュページから継続するデータ(マッピングユニットの可変サイズのデータの一部)640。ただし、該データはオプションとして及び/または選択的に含まれる。
・フラッシュページを満たすための、1以上のマッピングユニット650のパックされた(たとえば、オプションとして及び/または選択的に圧縮された)データ。該データの最後は、オプションとして及び/または選択的に、後続のフラッシュページ内へと継続する。
・フラッシュページの最後にあるオプションのパディング(650に含まれている)。パディングは、たとえば、
i)フラッシュページに追加された最後の可変サイズのデータ部分の後に、ヘッダーのサイズより小さい未使用バイトが残された(このため、別の可変サイズのデータ部分を開始するために新しいヘッダーを追加することができなくなった)場合、
ii)オプションとして及び/または選択的に、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(長さ)フィールドを含む。
・物理的なフラッシュページアドレス。
・可変サイズデータ項目に対するフラッシュページ内のオフセット。
・可変サイズデータ項目の長さ。
・他の制御情報。
いくつかの実施形態では、たとえば、ゼロの値が所定の最小長に対応するようにオフセットすることによって、長さが符号化される。別の実施形態では、該所定の最小長よりも短くなるように圧縮されたデータは、そのサイズが少なくとも該所定の最小長になるまでパディングされる。
・フラッシュページのヘッダー部分としてフラッシュページに書き込まれる一連のヘッダー。
・フラッシュページのユーザーデータ部分として該フラッシュページに書き込まれる、ローカルメモリの連続する部分(シーケンシャルな部分)の最初の(または第1の)開始アドレス及び最初の(または第1の)長さ。
・少なくとも1つのマッピングユニットのデータの少なくとも一部を含むフラッシュページのユーザーデータ部分。
・後続のフラッシュページのユーザーデータ完了部分として該後続のフラッシュページに書き込まれる、ローカルメモリの連続する部分(シーケンシャルな部分)の2番目の(または第2の)開始アドレス及び2番目の(または第2の)長さ。
・1つのマッピングユニットのデータの一部を含むかまたは空であるユーザーデータ完了部分。
・フラッシュページに書き込まれるゼロ以上のパディングバイトの数(または該パディングバイト。ここで、パディングバイトは、たとえば、ユーザーデータ完了部分が空で、かつ、フラッシュページが一杯ではない場合に使用される。
制御プロセッサは、一連のそれぞれのマッピングユニットアドレス、ローカルメモリアドレス及び長さを、再フォーマットによって一連のヘッダーに簡単に変換できるようになっており、及び、少数のダイレクトメモリアクセス(DMA)コマンドを生成して、フラッシュページを構成する部分(一連のヘッダー、以前のフラッシュページの完了部分、ユーザーデータ部分、及び任意のパディングバイト)をNVMに転送できるようになっている点で有利である。
・該論理ブロックアドレスをマッピングユニットアドレスに変換する(ステップ1114)。
・複数のマップエントリを含むマップ内のマッピングユニットアドレスを調べて、それらのマップエントリのうちの関連する1つのマップエントリを決定する(ステップ1118)。
・該関連するマップエントリのそれぞれのフラッシュページアドレスを取り出して(ステップ1122)、関連するフラッシュページが、フラッシュページキャッシュ内にあるか、または、NVMから読み出す必要があるかを判定する(ステップ1130)。
・該関連するマップエントリからそれぞれのオフセット及び長さを取り出し、該それぞれのオフセット及び長さにしたがって、
・該関連するフラッシュページ内でアクセスする複数の読み出しユニットの数(または番号)と、
・該アクセスされた読み出しユニットのフラッシュページ内の読み出しユニットオフセット及び全読み出しユニット長(読み出しユニット全体の長さ)と、
・該アクセスされた読み出しユニットのデコード(復号)されたバージョンから、マッピングユニットアドレスに関連付けられているデータを取り出して処理する(たとえば(圧縮を)解凍する)ためのDMAコマンド
を決定する(ステップ1126)。
・該関連するフラッシュページがフラッシュページキャッシュ内にないと判定したことに応答して、NVMから該関連するフラッシュページの該アクセスされた読み出しユニットを読み出し(ステップ1134)、該アクセスされた読み出しユニットに対して誤り訂正復号(誤り訂正デコーディング)を実行して(ステップ1138)、訂正されたデータを生成する。
・該関連するマップエントリのそれぞれのオフセット及び長さにしたがって、該訂正されたデータ内の関連付けられたデータを取り出して、該取り出したデータを解凍する(ステップ1142)。
・読み出しコマンドに応答して、該解凍されたデータをホストに提供する(ステップ1146)。
ランダム読み出しの場合に典型的には、関連付けられたデータを読み出すために関連するフラッシュページ内でアクセスする読み出しユニット(の数)は、該関連するフラッシュページ内の全ての読み出しユニットより少ない。さらに、関連付けられたデータが可変サイズであるため、最初の(または第1の)論理ブロックアドレスを指示する最初の(または第1の)読み出しコマンドに対する、関連するフラッシュページ内でアクセスする読み出しユニットの数(または番号)は、2番目の(または第2の)論理ブロックアドレスを指示する2番目の(または第2の)読み出しコマンドに対する、関連するフラッシュページ内でアクセスする読み出しユニットの数(または番号)とは異なり、該2番目の(または第2の)論理ブロックアドレスは、該最初の(または第1の)論理ブロックアドレスとは異なる。いくつかの実施形態では、関連するフラッシュページ内でアクセスする(数の)読み出しユニットだけが、該関連するフラッシュページから読み出される。すなわち、関連付けられたデータの一部を含む読み出しユニットのうちの(少なくともいくつかの)読み出しユニットだけが、該関連付けられたデータにアクセスするために読み出される。
・従来のFTL。
・可変サイズのFTL。
・最適化された可変サイズのFTLのシーケンシャルリード(順次読み出し)。
・不揮発性メモリの異なる物理的部分における上記の任意の組み合わせ。
・SSDコントローラの論理アドレス空間の異なる論理的部分における上記の任意の組み合わせ。
・不揮発性メモリに対する生の物理的アクセス(raw physical access。直接な物理的アクセス)。
・SSDコントローラに結合されたホストの制御下における上記の任意の組み合わせ。
詳細な説明のイントロダクションに続いて、一群の例示的な実施形態を示すが、それらの実施形態は、少なくともいくつかの「EC」(例の組み合わせ)のように明示的に列挙されたものを含み、本明細書及び/または図面に記載されている概念に従う種々の実施形態のタイプの追加の説明を提供するが、それらの例は、相互排他的であること、網羅的であること、及び、それらの例に限定ことのいずれも意図していない。本発明は、それらの例示的な実施形態には限定されず、特許請求の範囲及びそれの等価物の範囲内の全て可能性のある修正及び変更を包含する。
方法であって、
I/Oデバイスにおいて、ホストを介してI/Oデバイスインターフェースに送られた読み出し要求を受け取るステップであって、該読み出し要求は、前記I/Oデバイスの不揮発性メモリから、該読み出し要求の論理ブロックアドレスに対応するデータを読み出すための要求である、ステップと、
前記読み出し要求を受け取ったことに応答して、
マップの複数のエントリのうちの特定のエントリを読み出して、前記不揮発性メモリの複数のページのうちの特定のページの物理アドレスと、前記読み出し要求の前記論理ブロックアドレスに対応するデータの書き込みに応答して以前に格納された圧縮データ(圧縮されているデータ)に対する前記特定のページ内のオフセットと、前記圧縮データのバイト長とを取得するステップであって、前記特定のマップエントリは、前記読み出し要求の前記論理ブロックアドレスに関連付けられている、ステップと、
前記圧縮データに対する前記特定のページ内のオフセット及び前記圧縮データのバイト長を、前記特定のページ内の複数の読み出しユニットのうちの最初の(または第1の)読み出しユニットのアドレス、及び、前記特定のページから読み出される読み出しユニットの数(または番号)に変換するステップと、
前記特定のページから前記数(または前記番号)の読み出しユニットだけを読み出すステップと、
前記特定のページから読み出した前記読み出しユニットの各々に対して誤り訂正復号(処理)を実施して、訂正されたデータを得るステップと、
前記圧縮データに対する前記特定のページ内のオフセット、及び、前記圧縮データのバイト長にしたがって、前記訂正されたデータから前記圧縮データを取り出すステップと、
前記圧縮データを解凍してリターンデータ(ホストに返すデータ)を生成するステップと、
前記リターンデータを前記ホストに返すステップ
を実行するステップ
を含む方法。
方法であって、
I/Oデバイスにおいて、ホストを介してI/Oデバイスインターフェースに送られた読み出し要求を受け取るステップであって、該読み出し要求は、前記I/Oデバイスの不揮発性メモリから、該読み出し要求の論理ブロックアドレスに対応するデータを読み出すための要求である、ステップと、
前記読み出し要求を受け取ったことに応答して、
マップの複数のエントリのうちの特定のエントリを読み出して、前記不揮発性メモリの複数のページのうちの特定のページの物理アドレスと、前記読み出し要求の前記論理ブロックアドレスに対応するデータの書き込みに応答して以前に格納された圧縮データ(圧縮されているデータ)に対する前記特定のページ内のオフセットと、前記圧縮データのバイト長とを取得するステップであって、前記特定のマップエントリは、前記読み出し要求の前記論理ブロックアドレスに関連付けられている、ステップと、
前記圧縮データに対する前記特定のページ内のオフセット及び前記圧縮データのバイト長を、前記特定のページ内の複数の読み出しユニットのうちの最初の(または第1の)読み出しユニットのアドレス、及び、前記特定のページから読み出される読み出しユニットの数(または番号)に変換するステップと、
前記特定のページから前記数以上で、前記特定のページ内の全ての読み出しユニットよりは少ない数の読み出しユニットを読み出すステップと、
前記特定のページから読み出した前記読み出しユニットの各々に対して誤り訂正復号を実施して、訂正されたデータを得るステップと、
前記圧縮データに対する前記特定のページ内のオフセット、及び、前記圧縮データのバイト長にしたがって、前記訂正されたデータから前記圧縮データを取り出すステップと、
前記圧縮データを解凍してリターンデータ(ホストに返すデータ)を生成するステップと、
前記リターンデータを前記ホストに返すステップ
を実行するステップ
を含む方法。
I/Oデバイスにおいて、前記ホストを介してI/Oデバイスインターフェースに送られた書き込み要求を受け取るステップであって、該書き込み要求は、前記論理ブロックアドレスに対応するデータを書き込むための要求である、ステップと、
前記書き込み要求を受け取ったことに応答して、
前記論理ブロックアドレスに対応する前記データを圧縮して、前記論理ブロックアドレスに対応する前記データよりも小さな圧縮された書き込みデータを生成するステップと、
前記特定のページに、前記圧縮された書き込みデータの少なくとも最初の(または第1の)部分を書き込むステップと、
前記特定のエントリに、前記特定のページの物理アドレス、前記圧縮された書き込みデータに対する前記特定のページ内のオフセット、及び、前記圧縮された書き込みデータのバイト長を格納するステップ
を実施するステップ
をさらに含む、上記EC1またはEC2の方法。
前記書き込みデータに対する要求を受け取ったことに応答して、前記特定のページにヘッダーを書き込むステップをさらに含む上記EC8の方法であって、前記ヘッダーは、前記要求の前記論理ブロックアドレスの少なくとも一部と前記圧縮データのバイト長とを含む、方法。
前記論理ブロックアドレスが、複数の論理ブロックアドレスのうちの最初の(または第1の)論理ブロックアドレスであり、前記数の読み出しユニットのうちの少なくとも1つが、前記論理ブロックアドレスのそれぞれに対応する少なくともいくつかのデータを含む、上記EC1またはEC2の方法。
方法であって、
I/Oデバイスにおいて、ホストを介してI/Oデバイスインターフェースに送られた読み出し要求を受け取るステップであって、該読み出し要求は、前記I/Oデバイスの不揮発性メモリから、該読み出し要求の論理ブロックアドレスに対応するデータを読み出すための要求である、ステップと、
前記読み出し要求を受け取ったことに応答して、
マップの複数のエントリのうちの特定のエントリを読み出して、前記不揮発性メモリの複数のページのうちの特定のページの物理アドレスと、前記読み出し要求の前記論理ブロックアドレスに対応するデータの書き込みに応答して以前に格納された可変サイズのデータ(以下、可変サイズのデータを可変サイズデータともいう)に対する前記特定のページ内のオフセットと、前記可変サイズデータのバイト長とを取得するステップであって、前記特定のマップエントリは、前記読み出し要求の前記論理ブロックアドレスに関連付けられている、ステップと、
前記可変サイズデータに対する前記特定のページ内のオフセット及び前記可変サイズデータのバイト長を、前記特定のページ内の複数の読み出しユニットのうちの最初の(または第1の)読み出しユニットのアドレス、及び、前記特定のページから読み出される読み出しユニットの数(または番号)に変換するステップと、
前記特定のページから前記数(または前記番号)の読み出しユニットだけを読み出すステップと、
前記特定のページから読み出した前記読み出しユニットの各々に対して誤り訂正復号を実施して、訂正されたデータを得るステップと、
前記可変サイズデータに対する前記特定のページ内のオフセット、及び、前記可変サイズデータのバイト長にしたがって、前記訂正されたデータから前記可変サイズデータを取り出すステップと、
前記取り出したデータを前記ホストに返すステップ
を実行するステップ
を含む方法。
I/Oデバイスにおいて、前記ホストを介してI/Oデバイスインターフェースに送られた書き込み要求を受け取るステップであって、該書き込み要求は、前記論理ブロックアドレスに対応する可変サイズデータ、及び前記可変サイズデータのサイズを書き込むための要求である、ステップと、
前記書き込み要求を受け取ったことに応答して、
前記特定のページに、前記可変サイズデータの少なくとも最初の(または第1の)部分を書き込むステップと、
前記特定のエントリに、前記特定のページの物理アドレス、前記可変サイズデータに対する前記特定のページ内のオフセット、及び、前記可変サイズデータのサイズに対応する該可変サイズデータのバイト長を格納するステップ
を実施するステップ
をさらに含む、上記EC1またはEC12の方法。
いくつかの実施形態では、複数ノードの記憶装置または該装置の(1以上の)一部、たとえば、I/OデバイスのHDDもしくはSSDコントローラによって実行される全てのまたは一部の処理の種々の組み合わせが、コンピュータシステムによる処理と互換性のある仕様によって指定され、この場合、それらのHDDもしくはSSDコントローラは、(CPUなどの)プロセッサ、(ROCチップなどのI/Oコントローラ、及び、上記の処理の全てもしくは一部を提供するプロセッサもしくはマイクロプロセッサもしくはシステムオンチップもしくは特定用途向け集積回路もしくはハードウェアアクセラレータもしくは他の回路の一部と相互運用(ないし相互作用)できるようにされている。該仕様は、ハードウェア記述言語、回路記述、ネットリスト記述、マスク記述、もしくはレイアウト記述などの種々の記述にしたがう。例示的な記述には、Verilog、VHDL、SPICE、PSpiceなどのSPICEの変形バージョン、IBIS、LEF、DEF、GDS-II、OASIS、または他の記述が含まれる。種々の実施形態において、処理には、1以上の集積回路に含めるのに適切なロジック(論理回路)及び/または回路を生成し、検証し、または指定するための解釈、コンパイル、シミュレーション、及び合成の任意の組み合わせが含まれる。種々の実施形態によれば、集積回路の各々は、種々の技術にしたがって設計可能であり及び/または製造可能である。それらの技術には、(フィールドもしくはマスクプログラマブルゲートアレイ集積回路などの)プログラム可能な技術、(完全にもしくは部分的にセルベースの集積回路などの)セミカスタム技術、(実質的に特化された集積回路などの)フルカスタム技術、それらの任意の組み合わせ、または、集積回路の設計及び/または製造と互換性のある任意の他の技術が含まれる。
上記の説明では、単にテキスト及び図面の準備の便宜のために、いくつかの選択がされており、それらの選択は、別様であることが表示ないし示唆されていない限り、それ自体が、説明した実施形態の構造または動作に関する追加の情報を伝えるものとして解釈されるべきではない。それらの選択の例には、図面の番号付けに使用される表示の特定の編成もしくは割り当て、及び、実施形態の特徴及び要素を識別し及び参照するために使用される要素の識別情報(たとえばコールアウト(吹き出しなど)や数値表示)の特定の編成もしくは割り当てが含まれる。
Claims (11)
- 方法であって、
I/Oデバイスにおいて、ホストを介してI/Oデバイスインターフェースに送られた読み出し要求を受け取るステップであって、該読み出し要求は、前記I/Oデバイスの不揮発性メモリから、該読み出し要求の論理ブロックアドレスに対応するデータを読み出すための要求である、ステップと、
前記読み出し要求を受け取ったことに応答して、
マップの複数のエントリのうちの特定のエントリを読み出して、前記不揮発性メモリの複数のページのうちの特定のページの物理アドレスと、前記読み出し要求の前記論理ブロックアドレスに対応するデータの書き込みに応答して以前に格納された圧縮データ(圧縮されているデータ)に対する前記特定のページ内のオフセットと、前記圧縮データのバイト長とを取得するステップであって、前記特定のマップエントリは、前記読み出し要求の前記論理ブロックアドレスに関連付けられている、ステップと、
前記圧縮データに対する前記特定のページ内のオフセット及び前記圧縮データのバイト長を、前記特定のページ内の複数の読み出しユニットのうちの第1の読み出しユニットのアドレス、及び、前記特定のページから読み出される読み出しユニットの数に変換するステップと、
前記特定のページから前記数の読み出しユニットだけを読み出すステップと、
前記特定のページから読み出した前記読み出しユニットの各々に対して誤り訂正復号処理を実施して、訂正されたデータを得るステップと、
前記圧縮データに対する前記特定のページ内のオフセット、及び、前記圧縮データのバイト長にしたがって、前記訂正されたデータから前記圧縮データを取り出すステップと、
前記圧縮データを解凍してリターンデータを生成するステップと、
前記リターンデータを前記ホストに返すステップ
を実行するステップと、
前記圧縮データに対する前記特定のページ内のオフセット及び前記圧縮データのバイト長と、前記特定のページ内のユーザーデータの量との組み合わせにしたがって、前記圧縮データの少なくとも一部が、前記不揮発性メモリの前記ページに続くページの1以上の読み出しユニットに存在するか否かを判定するステップ
を含む方法。 - 方法であって、
I/Oデバイスにおいて、ホストを介してI/Oデバイスインターフェースに送られた読み出し要求を受け取るステップであって、該読み出し要求は、前記I/Oデバイスの不揮発性メモリから、該読み出し要求の論理ブロックアドレスに対応するデータを読み出すための要求である、ステップと、
前記読み出し要求を受け取ったことに応答して、
マップの複数のエントリのうちの特定のエントリを読み出して、前記不揮発性メモリの複数のページのうちの特定のページの物理アドレスと、前記読み出し要求の前記論理ブロックアドレスに対応するデータの書き込みに応答して以前に格納された圧縮データ(圧縮されているデータ)に対する前記特定のページ内のオフセットと、前記圧縮データのバイト長とを取得するステップであって、前記特定のマップエントリは、前記読み出し要求の前記論理ブロックアドレスに関連付けられている、ステップと、
前記圧縮データに対する前記特定のページ内のオフセット及び前記圧縮データのバイト長を、前記特定のページ内の複数の読み出しユニットのうちの第1の読み出しユニットのアドレス、及び、前記特定のページから読み出される読み出しユニットの数に変換するステップと、
前記特定のページから前記数以上で、前記特定のページ内の全ての読み出しユニットよりは少ない数の読み出しユニットを読み出すステップと、
前記特定のページから読み出した前記読み出しユニットの各々に対して誤り訂正復号処理を実施して、訂正されたデータを得るステップと、
前記圧縮データに対する前記特定のページ内のオフセット、及び、前記圧縮データのバイト長にしたがって、前記訂正されたデータから前記圧縮データを取り出すステップと、
前記圧縮データを解凍してリターンデータを生成するステップと、
前記リターンデータを前記ホストに返すステップ
を実行するステップと、
前記圧縮データに対する前記特定のページ内のオフセット及び前記圧縮データのバイト長と、前記特定のページ内のユーザーデータの量との組み合わせにしたがって、前記圧縮データの少なくとも一部が、前記不揮発性メモリの前記ページに続くページの1以上の読み出しユニットに存在するか否かを判定するステップ
を含む方法。 - 読み出される読み出しユニットの数が、前記特定のページ内の全ての読み出しユニットの数よりも少ない、請求項1または2の方法。
- 前記不揮発性メモリの前記ページのうちの第1のページは、第1の数の読み出しユニットを含み、前記不揮発性メモリの前記ページのうちの第2のページは、第2の数の読み出しユニットを含み、前記第1の数は前記第2の数とは異なる、請求項1〜3のいずれかの方法。
- 前記不揮発性メモリの前記ページのうちの第1のページは、第1の量のユーザーデータを含み、前記不揮発性メモリの前記ページのうちの第2のページは、第2の量のユーザーデータを含み、ユーザーデータの前記第1の量はユーザーデータの前記第2の量とは異なる、請求項1〜4のいずれかの方法。
- I/Oデバイスにおいて、前記ホストを介してI/Oデバイスインターフェースに送られた書き込み要求を受け取るステップであって、該書き込み要求は、前記論理ブロックアドレスに対応するデータを書き込むための要求である、ステップと、
前記書き込み要求を受け取ったことに応答して、
前記論理ブロックアドレスに対応する前記データを圧縮して、前記論理ブロックアドレスに対応する前記データよりも小さな圧縮された書き込みデータを生成するステップと、
前記特定のページに、前記圧縮された書き込みデータの少なくとも第1の部分を書き込むステップと、
前記特定のエントリに、前記特定のページの物理アドレス、前記圧縮された書き込みデータに対する前記特定のページ内のオフセット、及び、前記圧縮された書き込みデータのバイト長を格納するステップ
を実施するステップ
をさらに含む、請求項1〜5のいずれかの方法。 - 前記書き込みデータに対する要求を受け取ったことに応答して、前記特定のページにヘッダーを書き込むステップをさらに含む請求項6の方法であって、前記ヘッダーは、前記要求の前記論理ブロックアドレスの少なくとも一部と前記圧縮データのバイト長とを含む、方法。
- 前記論理ブロックアドレスが、複数の論理ブロックアドレスのうちの第1の論理ブロックアドレスであり、前記数の読み出しユニットのうちの少なくとも1つが、前記論理ブロックアドレスのそれぞれに対応する少なくともいくつかのデータを含む、請求項1〜7のいずれかの方法。
- 前記数の読み出しユニットのうちの少なくとも1つが、前記圧縮データの一部に加えて、1以上のヘッダーを含む、請求項1〜8のいずれかの方法。
- 方法であって、
I/Oデバイスにおいて、ホストを介してI/Oデバイスインターフェースに送られた読み出し要求を受け取るステップであって、該読み出し要求は、前記I/Oデバイスの不揮発性メモリから、該読み出し要求の論理ブロックアドレスに対応するデータを読み出すための要求である、ステップと、
前記読み出し要求を受け取ったことに応答して、
マップの複数のエントリのうちの特定のエントリを読み出して、前記不揮発性メモリの複数のページのうちの特定のページの物理アドレスと、前記読み出し要求の前記論理ブロックアドレスに対応するデータの書き込みに応答して以前に格納された可変サイズのデータ(以下、可変サイズのデータを可変サイズデータという)に対する前記特定のページ内のオフセットと、前記可変サイズデータのバイト長とを取得するステップであって、前記特定のマップエントリは、前記読み出し要求の前記論理ブロックアドレスに関連付けられている、ステップと、
前記可変サイズデータに対する前記特定のページ内のオフセット及び前記可変サイズデータのバイト長を、前記特定のページ内の複数の読み出しユニットのうちの第1の読み出しユニットのアドレス、及び、前記特定のページから読み出される読み出しユニットの数に変換するステップと、
前記特定のページから前記数の読み出しユニットだけを読み出すステップと、
前記特定のページから読み出した前記読み出しユニットの各々に対して誤り訂正復号処理を実施して、訂正されたデータを得るステップと、
前記可変サイズデータに対する前記特定のページ内のオフセット、及び、前記可変サイズデータのバイト長にしたがって、前記訂正されたデータから前記可変サイズデータを取り出すステップと、
前記取り出したデータを前記ホストに返すステップ
を実行するステップと、
前記可変サイズデータに対する前記特定のページ内のオフセット及び前記可変サイズデータのバイト長と、前記特定のページ内のユーザーデータの量との組み合わせにしたがって、前記可変サイズデータの少なくとも一部が、前記不揮発性メモリの前記ページに続くページの1以上の読み出しユニットに存在するか否かを判定するステップ
を含む方法。 - I/Oデバイスにおいて、前記ホストを介してI/Oデバイスインターフェースに送られた書き込み要求を受け取るステップであって、該書き込み要求は、前記論理ブロックアドレスに対応する可変サイズデータ、及び前記可変サイズデータのサイズを書き込むための要求である、ステップと、
前記書き込み要求を受け取ったことに応答して、
前記特定のページに、前記可変サイズデータの少なくとも第1の部分を書き込むステップと、
前記特定のエントリに、前記特定のページの物理アドレス、前記可変サイズデータに対する前記特定のページ内のオフセット、及び、前記可変サイズデータのサイズに対応する該可変サイズデータのバイト長を格納するステップ
を実施するステップ
をさらに含む、請求項10の方法。
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 JP2015036981A (ja) | 2015-02-23 |
JP2015036981A5 JP2015036981A5 (ja) | 2015-04-02 |
JP5978259B2 true JP5978259B2 (ja) | 2016-08-24 |
Family
ID=51662509
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014150593A Expired - Fee Related JP5978259B2 (ja) | 2013-08-16 | 2014-07-24 | 順次読み出し最適化可変サイズフラッシュトランスレーションレイヤ |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP5978259B2 (ja) |
GB (1) | GB2519629A (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9927998B2 (en) | 2014-02-05 | 2018-03-27 | Tidal Systems, Inc. | Flash memory compression |
JP6443571B1 (ja) * | 2018-02-02 | 2018-12-26 | 富士通株式会社 | ストレージ制御装置、ストレージ制御方法及びストレージ制御プログラム |
JP6443572B1 (ja) * | 2018-02-02 | 2018-12-26 | 富士通株式会社 | ストレージ制御装置、ストレージ制御方法及びストレージ制御プログラム |
AU2019452898A1 (en) * | 2019-07-02 | 2022-01-06 | Microsoft Technology Licensing, Llc | Hardware-based memory compression |
Family Cites Families (7)
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 |
KR101636785B1 (ko) * | 2010-12-01 | 2016-07-06 | 엘에스아이 코포레이션 | 독립 실리콘 소자들을 갖는 동적 상위 레벨 리던던시 모드 관리 |
US8656101B2 (en) * | 2011-01-18 | 2014-02-18 | Lsi Corporation | Higher-level redundancy information computation |
KR101289931B1 (ko) * | 2011-09-23 | 2013-07-25 | 한양대학교 산학협력단 | 다양한 블록 크기를 지원하는 주소 사상을 사용하여 플래시 메모리 내에 데이터를 저장하는 방법 및 장치 |
US8843711B1 (en) * | 2011-12-28 | 2014-09-23 | Netapp, Inc. | Partial write without read-modify |
-
2014
- 2014-07-24 JP JP2014150593A patent/JP5978259B2/ja not_active Expired - Fee Related
- 2014-08-15 GB GB1414545.2A patent/GB2519629A/en not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
GB2519629A (en) | 2015-04-29 |
JP2015036981A (ja) | 2015-02-23 |
GB201414545D0 (en) | 2014-10-01 |
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 (zh) | 可變大小快閃轉變層 | |
JP6387231B2 (ja) | 不揮発性メモリへの書き込みの管理および領域選択 | |
US9886383B2 (en) | Self-journaling and hierarchical consistency for non-volatile storage | |
US9329991B2 (en) | Translation layer partitioned between host and controller | |
US8910017B2 (en) | Flash memory with random partition | |
EP2750018A2 (en) | Non-volatile memory program failure recovery via redundant arrays | |
TWI703499B (zh) | 資料儲存裝置及其共享控制器中記憶體的方法 | |
JP5978259B2 (ja) | 順次読み出し最適化可変サイズフラッシュトランスレーションレイヤ | |
Jedrak et al. | NAND Flash memory in embedded systems | |
JP2019159791A (ja) | メモリシステム |
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 |