JP5709814B2 - 不揮発性メモリを有するシステムのための高速ツリー平坦化 - Google Patents

不揮発性メモリを有するシステムのための高速ツリー平坦化 Download PDF

Info

Publication number
JP5709814B2
JP5709814B2 JP2012221682A JP2012221682A JP5709814B2 JP 5709814 B2 JP5709814 B2 JP 5709814B2 JP 2012221682 A JP2012221682 A JP 2012221682A JP 2012221682 A JP2012221682 A JP 2012221682A JP 5709814 B2 JP5709814 B2 JP 5709814B2
Authority
JP
Japan
Prior art keywords
entries
tree
sliding window
nvm
memory
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
Application number
JP2012221682A
Other languages
English (en)
Other versions
JP2013065310A (ja
Inventor
ジェイ ポスト ダニエル
ジェイ ポスト ダニエル
フメリニツキー ヴァディム
フメリニツキー ヴァディム
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Apple Inc
Original Assignee
Apple Inc
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 Apple Inc filed Critical Apple Inc
Publication of JP2013065310A publication Critical patent/JP2013065310A/ja
Application granted granted Critical
Publication of JP5709814B2 publication Critical patent/JP5709814B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)

Description

本発明は、不揮発性メモリを有するシステムのための高速ツリー平坦化に関する。
NANDフラッシュメモリ、及び他の形式の不揮発性メモリ(NVM)は、大量記憶のために一般的に使用されている。例えば、ポータブルメディアプレーヤのような消費者向け電子装置は、多くの場合、音楽、ビデオ及び他のメディアを記憶するためにフラッシュメモリを備えている。
NVMを有するシステムは、ファイルシステムにより使用される論理的アドレスをNVMの物理的アドレスへマップする(例えば、論理的−物理的マッピングを与える)データ構造を含むことができる。この構造は、時々、揮発性メモリに存在する。既存のファイルが更新されるか又は付加的なファイルが追加されるときには、マッピングを記憶するのに必要なメモリの量がそれに応じて増加する。従って、あるケースでは、その構造に割り当てられたメモリ量では、全ての論理的−物理的マッピングを捕獲するのに不充分である。
不揮発性メモリ(NVM)を有するシステムのための高速ツリー平坦化を行うシステム及び方法が開示される。システムの揮発性メモリにツリーが記憶され、ツリーは、NVMの論理的スペースと物理的アドレスとの間の論理的−物理的マッピングを含む。ツリーに使用できるメモリの量が所定のスレッシュホールドより少ない場合に、システムは、NVMにおけるデータ断片の数を減少するよう試み、その結果、ツリーの一部分を平坦化することができる。解放されたツリーメモリの量は、ツリーメモリプールに追加されて戻される。NVMインターフェイスは、例えば、ツリーを横切って1つ以上のスライディングウインドウを移動し、条件が満足されたときにスライディングウインドウを拡張し、ツリーをスキャニングしながらプライオリティキューを使用し、及び/又はツリーが更新される間にプライオリティキューを維持する、等の適当な解決策に基づいて合成すべきツリーのエントリの最適なセットを選択する。
本発明の前記及び他の態様及び効果は、全体にわたって同じ部分が同じ参照文字で示された添付図面を参照してなされた以下の詳細な説明を考慮したときに明らかとなろう。
本発明の種々の実施形態により構成された電子装置のブロック図である。 本発明の種々の実施形態により構成された電子装置のブロック図である。 本発明の種々の実施形態による不揮発性メモリの機能図である。 本発明の種々の実施形態による論理的ブロックアドレスから物理的ページへのマッピングを例示するブロック図である。 本発明の種々の実施形態により論理的−物理的マッピングを与えるのに使用されるツリーの一部分を例示するブロック図である。 本発明の種々の実施形態による論理的ブロックアドレスから物理的ページへの別のマッピングを例示するブロック図である。 本発明の種々の実施形態により論理的−物理的マッピングを与えるのに使用される別のツリーの一部分を例示するブロック図である。 本発明の種々の実施形態による高速ツリー平坦化プロセスを例示するフローチャートである。 本発明の種々の実施形態により不揮発性メモリに物理的に隣接する断片を発生するプロセスを例示するフローチャートである。 本発明の種々の実施形態により高速ツリー平坦化を行う別のプロセスを例示するフローチャートである。 本発明の種々の実施形態により高速ツリー平坦化を行う別のプロセスを例示するフローチャートである。 本発明の種々の実施形態により高速ツリー平坦化を行う更に別のプロセスを例示するフローチャートである。 本発明の種々の実施形態によるプライオリティキューのブロック図である。 本発明の種々の実施形態により高速ツリー平坦化を行う更に別のプロセスを例示するフローチャートである。 本発明の種々の実施形態による別のプライオリティキューのブロック図である。
不揮発性メモリ(NVM)を有するシステムのための高速ツリー平坦化を行うシステム及び方法が提供される。システムの揮発性メモリにツリーが記憶され、ツリーは、NVMの論理的スペースと物理的アドレスとの間の論理的−物理的マッピングを含む。ツリーに使用できるメモリの量が所定のスレッシュホールドより少ない場合に、システムのNVMインターフェイスは、NVMにおけるデータ断片の数を減少するように試み、その結果、ツリーの一部分を平坦化することができる。解放されたツリーメモリの量は、ツリーメモリプールに追加されて戻される。
NVMインターフェイスは、例えば、ツリーのエントリの最適なセットを単一エントリ又はノードへ合成することによりツリーの一部分を平坦化する。エントリの最適なセットは、論理的スペースでは隣接しているが、物理的スペースでは隣接していない。従って、エントリの最適なセットを選択した後、NVMインターフェイスは、断片を物理的に隣接できるようにエントリに対応するデータ断片を再プログラムすることができる。特に、NVMインターフェイスは、NVMから複数のエントリに対応するデータを読み取り、次いで、そのデータを揮発性メモリにセーブすることにより、断片を再プログラムすることができる。データをセーブした後、NVMインターフェイスは、データを順次にNVMの新たなスーパーブロックへプログラムすることができる。
NVMインターフェイスは、適当な解決策を使用してエントリの最適セットを選択することができる。ある実施形態では、NVMインターフェイスは、1つ以上のスライディングウインドウを使用してエントリの最適セットを得ることができる。あるケースでは、1つ以上のスライディングウインドウの各1つに対して最小スパンを維持することができる。次いで、異なる最小スパン間の比較に基づき、NVMインターフェイスは、エントリの最適セットを選択することができる。
他の実施形態では、NVMインターフェイスは、貪欲(greedy)解決策を使用して、平坦化すべきエントリの最適セットを見つけることができる。即ち、エントリの最適セットを見つけると、NVMインターフェイスは、エントリの最適セットに追加される付加的な連続エントリをツリーにおいてサーチし続けることができる。
更に別の実施形態では、NVMインターフェイスは、揮発性メモリにプライオリティキューを維持することによりエントリの最適セットを見つけることができる。例えば、NVMインターフェイスは、プライオリティキューにおけるスライディングウインドウに適合する複数のエントリに関連したパラメータを挿入するように試みる。NVMインターフェイスは、スライディングウインドウがツリーの端を通過するまでこのプロセスを続けることができる。次いで、NVMインターフェイスは、プライオリティキューを使用してエントリの最適セットを位置付けることができる。
更に別の実施形態では、NVMインターフェイスは、ツリーの更新を行いながら候補エントリのプライオリティキューを維持することによりエントリの最適セットを見つけることができる。ツリーに使用できるメモリ量が所定のスレッシュホールドより低いことが後で決定される場合には、NVMインターフェイスは、プライオリティキューを使用して、合成できるエントリを見つけることができる。
図1は、電子装置100のブロック図である。ある実施形態において、電子装置100は、ポータブルメディアプレーヤ、セルラー電話、ポケットサイズのパーソナルコンピュータ、パーソナルデジタルアシスタント(PDA)、デスクトップコンピュータ、ラップトップコンピュータ、及び他の適当な形式の電子装置であり、又はそれを含むことができる。
電子装置100は、システムオンチップ(SoC)110及び不揮発性メモリ(NVM)120を備えている。不揮発性メモリ120は、フローティングゲート又はチャージトラップ技術に基づくNANDフラッシュメモリ、NORフラッシュメモリ、消去可能なプログラマブルリードオンリメモリ(EPROM)、電気的に消去可能なプログラマブルリードオンリメモリ(EEPROM)、強誘電性RAM(FRAM(登録商標))、磁気抵抗性RAM(MRAM)、又はその組み合わせを含む。
NVM120は、消去可能な最小単位である「ブロック」へと編成され、更に、プログラム又は読み取りできる最小単位である「ページ」へと編成される。ある実施形態では、NVM120は、複数のブロックを各々有する複数の集積回路を含むことができる。対応する集積回路からのメモリ位置(例えば、ブロック、又はブロックのページ)は、「スーパーブロック」を形成する。NVM120の各メモリ位置(例えば、ページ又はブロック)は、物理的アドレス(例えば、物理的ページアドレス又は物理的ブロックアドレス)を使用して参照することができる。
システムオンチップ110は、SoCコントロール回路112、メモリ114、及びNVMインターフェイス118を含む。SoCコントロール回路112は、SoC110の一般的動作及び機能、並びにSoC110の他のコンポーネント又は装置100をコントロールすることができる。例えば、ユーザ入力、及び/又はアプリケーション又はオペレーティングシステムのインストラクションに応答して、SoCコントロール回路112は、読み取り又は書き込み要求をNVMインターフェイス118へ発行して、NVM120からデータを得又はそこにデータを記憶することができる。明瞭化のために、SoCコントロール回路112が記憶又は検索のために要求するデータは、たとえそれがユーザ又はユーザアプリケーションに直接関連していなくても、「ユーザデータ」と称される。むしろ、ユーザデータは、(例えば、アプリケーション又はオペレーティングシステムを経て)SoCコントロール回路112によって発生され又は得られる適当なシーケンスのデジタル情報である。
SoCコントロール回路112は、電子装置100の機能を駆動するように働くハードウェア、ソフトウェア及びファームウェア、並びにコンポーネント、回路又はロジックの任意の組み合わせを含む。例えば、SoCコントロール回路112は、NVM120又はメモリ114に記憶されたソフトウェア/ファームウェアのコントロールものとで動作する1つ以上のプロセッサを含む。
メモリ114は、適当な形式の揮発性メモリ、例えば、ランダムアクセスメモリ(RAM)(例えば、スタティックRAM(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)、同期ダイナミックランダムアクセスメモリ(SDRAM)、倍データレート(DDR)RAM)、キャッシュメモリ、リードオンリメモリ(ROM)、又はその組み合わせを含む。メモリ114は、不揮発性メモリ120へプログラムされるか又はそこから読み取られるユーザデータを一時的に記憶することのできるデータソースを含む。ある実施形態では、メモリ114は、SoCコントロール回路112の一部分として実施されるプロセッサのためのメインメモリとして働く。
ある実施形態では、メモリ114は、その関連動作を遂行するためにNVMインターフェイス118により使用される1つ以上のデータ構造を記憶する。例えば、メモリ114は、ファイルシステムにより使用される論理的アドレスとNVM120の物理的アドレスとの間の論理的−物理的マッピングを与えるツリーを含む。別の例として、メモリ114は、ツリーを管理するためにNVMインターフェイス118により使用される情報を含む1つ以上のプライオリティキューを含む。ツリー及びプライオリティキューは、図4を参照して以下に詳細に述べる。
NVMインターフェイス118は、SoCコントロール回路112とNVM120との間のインターフェイス又はドライバとして働くように構成されたハードウェア、ソフトウェア及び/又はファームウェアの適当な組み合わせを含む。NVMインターフェイス118に含まれるソフトウェアモジュールとしては、それに対応するプログラムコードがNVM120又はメモリ114に記憶される。
NVMインターフェイス118は、SoCコントロール回路112がNVM120にアクセスしそしてNVM120のメモリ位置(例えば、ページ、ブロック、スーパーブロック、集積回路)及びそこに記憶されたデータ(例えば、ユーザデータ)を管理できるようにする種々の機能を遂行する。例えば、NVMインターフェイス118は、SoCコントロール回路112からの読み取り又は書き込み要求を解釈し、ウェアレベリングを遂行し、そしてNVM120のバスプロトコルに適合する読み取り及びプログラムインストラクションを発生する。
NVMインターフェイス118及びSoCコントロール回路112は、個別モジュールとして示されているが、これは、本発明の実施形態の説明を簡単にするものに過ぎない。これらモジュールは、ハードウェアコンポーネント、ソフトウェアコンポーネント、又はその両方を共有してもよいことを理解されたい。例えば、SoCコントロール回路112は、NVMインターフェイス118のためのソフトウエアベースのメモリドライバを実行してもよい。
ある実施形態では、電子装置100は、フラッシュメモリドライブ又はSDカードのようなターゲット装置を備え、これは、NVM120、及びNVMインターフェイス118のある部分又は全部を含む。これらの実施形態では、SoC110又はSoCコントロール回路112は、ターゲット装置のためのホストコントローラとして働く。例えば、ホストコントローラとして、SoC110は、読み取り及び書き込み要求をターゲット装置へ発行することができる。
図2は、種々の実施形態による電子装置100(図1)のファームウェア、ソフトウェア、及び/又はハードウェアコンポーネントの幾つかを詳細に示す電子装置200のブロック図である。電子装置200は、図1を参照して上述した特徴及び機能のいずれかを有し、そしてその逆のことも言える。図示されたように、破線は、層の境界を示す。境界線内にどのコンポーネントが入るかは、単なる例示に過ぎず、1つ以上のコンポーネントを異なる層と合併できることを理解されたい。
電子装置200は、ファイルシステム210、NVMドライバ212、NVMバスコントローラ216、及びNVM220を備えている。ある実施形態では、ファイルシステム210及びNVMドライバ212は、ソフトウェア又はファームウェアモジュールであり、そしてNVMバスコントローラ216及びNVM220は、ハードウェアモジュールである。従って、これらの実施形態では、NVMドライバ212は、NVMインターフェイス218のソフトウェア又はファームウェア態様を表わし、そしてNVMバスコントローラ216は、NVMインターフェイス218のハードウェア態様を表わす。
ファイルシステム210は、適当な形式のファイルシステム、例えば、ファイルアロケーションテーブル(FAT)ファイルシステム又はハイアラーキーファイルシステムプラス(HFS+)を備え、そして電子装置200のオペレーティングシステムの一部分(例えば、図1のSoCコントロール回路112の一部分)である。ある実施形態では、ファイルシステム210は、ページの論理的−物理的マッピングを与えるフラッシュファイルシステムを備えている。これらの実施形態において、ファイルシステム210は、以下に述べるNVMドライバ212の機能の幾つか又は全部を遂行し、それ故、ファイルシステム210及びNVMドライバ212は、個別のモジュールであってもなくてもよい。
ファイルシステム210は、アプリケーション及びオペレーティングシステムに対してファイル及びフォルダ構造を管理する。ファイルシステム210は、電子装置200上で実行されるアプリケーション又はオペレーティングシステムのコントロールのもとで動作し、そして情報がNVM220から読み取られるか又はそこに記憶されることをアプリケーション又はオペレーティングシステムが要求するときに書き込み及び読み取り要求をNVMドライバ212に与える。各読み取り又は書き込み要求と共に、ファイルシステム210は、ユーザデータをどこから読み取るべきか又はどこに書き込むべきか指示するための論理的アドレス、例えば、論理的ページアドレス又は論理的ブロックアドレスをページオフセットと共に与えることができる。
ファイルシステム210は、NVM220に直接適合しない読み取り及び書き込み要求をNVMドライバ212に与えることがある。例えば、論理的アドレスは、ハードドライブベースのシステムの典型である慣習又はプロトコルを使用してもよい。ハードドライブベースのシステムは、フラッシュメモリとは異なり、最初にブロック消去を遂行せずに、メモリ位置をオーバーライトすることができる。更に、ハードドライブは、装置の寿命を延長するためのウェアレベリングを必要としない。それ故、NVMインターフェイス218は、ファイルシステム要求を取り扱うためにメモリ特有、売主特有、又はその両方である機能を遂行し、そしてNVM200に適した仕方で他の管理機能を遂行することができる。
NVMドライバ212は、変換層214を備えている。ある実施形態では、変換層214は、フラッシュ変換層(FTL)であってもよいし又はそれを含んでもよい。書き込み要求の際に、変換層214は、与えられた論理的アドレスを、NVM220上の消去された空き物理的位置へマップすることができる。読み取り要求の際には、変換層214は、与えられた論理的アドレスを使用して、要求されたデータが記憶されている物理的アドレスを決定することができる。各NVMは、NVMのサイズ又は売主に基づいて異なるレイアウトを有することがあるので、このマッピング動作は、メモリ及び/又は売主特有でよい。
論理的−物理的アドレスマッピングに加えて、変換層214は、フラッシュ変換層の典型である他の適当な機能、例えば、ガーベージコレクション(GC)及びウェアレベリングを遂行することができる。
ある実施形態では、NVMドライバ212は、NVMバスコントローラ216とインターフェイスし、NVMアクセス要求(例えば、プログラム、読み取り、及び消去要求)を完了する。バスコントローラ216は、NVM220へのハードウェアインターフェイスとして働き、そしてNVM220のバスプロトコル、データレート及び他の仕様を使用してNVM220と通信することができる。
NVMインターフェイス218は、ここで、時々「メタデータ」と称されるメモリ管理データに基づいてNVM220を管理する。メタデータは、NVMドライバ212により発生されてもよいし、又はNVMドライバ212のコントロールのもとで動作するモジュールにより発生されてもよい。例えば、メタデータは、論理的アドレスと物理的アドレスとの間のマッピングの管理、不良ブロックの管理、ウェアレベリングに使用される情報、データエラーを検出又は修正するのに使用されるECCデータ、又はその組み合わせを含む。メタデータは、ファイルシステム210により与えられるデータを、論理的アドレスのようなユーザデータと共に含む。従って、一般的に、「メタデータ」とは、ユーザデータについての又はそれに関連した情報、又は不揮発性メモリの動作及びメモリ位置を管理するのに一般的に使用される情報を指す。
NVMインターフェイス218は、NVM220にメタデータを記憶するように構成される。ある実施形態では、NVMインターフェイス218は、ユーザデータに関連したメタデータを、ユーザデータが記憶される同じメモリ位置(例えば、ページ)に記憶する。例えば、NVMインターフェイス218は、ユーザデータ、関連論理的アドレス、及びユーザデータのためのECCデータをNVM220の1つ以上のメモリ位置に記憶する。又、NVMインターフェイス218は、ユーザデータに関する他の形式のメタデータも同じメモリ位置に記憶する。
NVMインターフェイス218は、NVM220のパワーアップ時又はNVM220の動作中に、どんなデータがその位置にあるか電子装置200が決定できるように、論理的アドレスを記憶する。特に、ファイルシステム210は、ユーザデータをその物理的アドレスではなく、その論理的アドレスに基づいて参照するので、NVMインターフェイス218は、ユーザデータ及び論理的アドレスを一緒に記憶して、それらの関連性を維持する。このように、物理的−論理的マッピングをNVM220に維持している個別のテーブルが古くなった場合でも、NVMインターフェイス218は、例えば、電子装置200のパワーアップ時又は再ブート時に適切なマッピングを依然決定することができる。
上述したように、NVM(例えば、図1のNVM120又は図2のNVM220)は、ダイ、ブロック、ページ、スーパーブロック、等へと編成される。例えば、図3は、NVM300の機能図である。NVM300は、NVM120(図1)又はNVM220(図2)と同じ又は同様である。図3は、NVM300の編成レイアウトを例示するためのものに過ぎず、不揮発性メモリの実際の物理的レイアウトを指示するものではない。例えば、ダイ0は、図3ではダイ1に隣接するものとして示されているが、これは、これらダイの機能的関係を単に例示するものに過ぎず、NVM300の実際の物理的レイアウトでは、これらダイは、互いに近くに配置されてもされなくてもよい。
更に、図3には、ある数のダイ、ブロック及びページが示されているが、これは単なる例示に過ぎず、当業者であれば、NVM300は、適当な数のダイ、ブロック及びページを含み得ることが明らかであろう。
図3に示すように、NVM300は、ダイ0、ダイ1、ダイ2及びダイ3のような1つ以上のダイ(即ち、集積回路)を含むことができる。NVM300の各ダイは、1つ以上の「ブロック」へと編成される。例えば、ダイ0−3は、各々がブロック0−3へ編成されるものとして示されている。
ダイの各ブロックは、更に、1つ以上のページへ編成される。例えば、ダイ0−3各々のブロック0は、ページ0−3へと編成されるものとして示されている。NVM300の各ページは、適当な情報を含む。例えば、ページは、ユーザデータ、メタデータ又はその両方を含む。ある実施形態では、NVM300に記憶された情報のエラー検出及び/又は修正を行うためにページにはECCデータのようなメタデータが含まれる。
又、NVM300は、ダイに同じ位置又は「ブロック番号」を有する各ダイからの1つのブロックを含む1つ以上のスーパーブロックも含む。例えば、NVM300のスーパーブロック0は、ダイ0−3各々のブロック0を含む。同様に、NVM300のスーパーブロック1は、ダイ0−3各々のブロック1を含み、NVM300のスーパーブロック2は、ダイ0−3各々のブロック2を含み、等々となる。
スーパーブロックは、1つ以上のブロックを仮想的にリンクし又は一緒に「ストライプ化」することにより形成される。ブロックは、スーパーブロックとして実質上リンクされるように各ダイの同じ行にある必要はない。実際には、ブロックは、スーパーブロックを形成するために2つ以上のダイからランダムに選択される。ある実施形態では、スーパーブロックが1つのブロックしか含まない。スーパーブロックは、動作上の並列性を与え、異なるダイに配置されたブロックに対してプログラミング、読み取り及び消去動作を並列に実行できるようにする。
更に、2つ以上のダイからのページが仮想的に一緒にリンクされてスーパーページ又は「ストライプ」を形成する。例えば、ストライプ302は、ダイ0−3各々のブロック0からのページ0を含む。同様に、ストライプ304は、ダイ0−3各々のブロック0からのページ3を含む。NVMインターフェイスにおいて実施される変換層(例えば、図2の変換層214)は、スーパーブロック又はストライプを追跡する。
NVM300のブロックは、上下の両ページを含むマルチレベルセル(MLC)ブロックである。MLCブロックの場合、アクセス時間(例えば、読み取り及びプログラミング時間)は、特定のストライプ(例えば、ストライプ302又は304)に含まれるページに対して同じままである。即ち、全ストライプがプログラムされるときに、ストライプの下のページが先にプログラムされた後に、上のページとなる。対照的に、プログラムされるデータがストライプの境界と整列されない場合は、上下のページが交互の順番でプログラムされる。換言すれば、プログラミングの順番に対してバイモダニズム(bi-modalism)がある。
従って、上のページのプログラミングは、典型的に、下のページのプログラミングより長時間を要するので、装置が1つ以上のストライプ境界に沿ってページをプログラムするのが好都合である。これは、非ストライプ整列プログラミングに存在するバイモダニズムを回避する。
図4は、論理的ブロックアドレス402の、物理的ページ404へのマッピング400を例示するブロック図である。論理的ブロックアドレス402は、論理的スペースに対応する。
ファイルシステム(例えば、図2のファイルシステム210)は、適当な数のLBAをファイルに割り当てることができる。例えば、図4に示すように、LBA402は、ファイルA−Nに対応し、ファイルA−Nの各々には、1つ以上のLBAが割り当てられる。例えば、ファイルAには、LBA0−38が割り当てられ、ファイルBには、LBA39が割り当てられ、ファイルCには、LBA40が割り当てられ、等々となる。
更に、LBAは、NVM(例えば、図1のNVM120、図2のNVM220又は図3のNVM300)の1つ以上の物理的アドレスに記憶されたデータを参照するためにファイルシステムにより使用される。例えば、図4に示すように、NVMは、ページ404を含むスーパーブロック410−414を含むことができる。LBA402の各々は、ページ404のうちのあるページへマップされる。従って、各LBAは、それに対応するページの物理的アドレスへマップされる。図4に示すように、例えば、ファイルAのスタートLBAは、物理的アドレスP3へマップされ、ファイルBのスタートLBAは、物理的アドレスP0へマップされ、等々となる。
図5は、論理的−物理的マッピングを与えるのに使用されるツリー500の一部分のブロック図である。特に、ツリー500は、LBA(例えば、図4のLBA402)と、NVM(例えば、図1のNVM120、図2のNVM220又は図3のNVM330)の対応する物理的アドレス(例えば、図4のページ404の物理的アドレス)との間のマッピングを与えることができる。上述したように、ツリー500は、揮発性メモリ(例えば、図1のメモリ114)に記憶され維持される。
ツリー500は、複数のノードを含み、各ノードは、メモリ割り当ての目的で一貫したサイズとされる(例えば、各ノードは、64バイトの固定サイズを有する)。更に、ツリー500の各ノードは、1つ以上のエントリを含む。例えば、図5に示すように、ノード502は、3つのエントリ(例えば、エントリ503−505)を含む。簡単化のために、図5は、ツリー500の一部分しか示していない。従って、破線のボックス508及び509は、図5に示されていない付加的なノード及びエントリを表わす。
ノードの各エントリは、スパン(例えば、エントリの論理的サイズ又は論理的アドレス数)に対応し、別のノードに対するポインタ(ノードポインタ)又はNVMの物理的アドレスに対するポインタ(NANDポインタ)のいずれかを含む。あるケースでは、スパンは、ラン長さエンコード圧縮(rle圧縮)レンジに対応する。例えば、図5に示すように、エントリ503−505は、各々、スパン2、2及び38に対応するように示されている。
更に、図5に示すように、エントリ503−505の各々は、ツリーにおける付加的なノードを指すノードポインタを有する。特に、エントリ503は、ノード510を指すものとして示され、これは、次いで、2つのエントリ(例えば、エントリ512及び514)を含む。同様に、エントリ504は、ノード520を指すものとして示され、これは、次いで、2つのエントリ(例えば、エントリ522及び524)を含む。最後に、エントリ505は、ノード530を指すものとして示され、これは、次いで、2つのエントリ(例えば、エントリ532及び534)を含む。
スパンは、LBAではなくツリー500に記憶されるので、NVMインターフェイス(例えば、図1のNVMインターフェイス118又は図2のNVMインターフェイス218)は、ツリー500を頂部ノードから底部ノードへと横断して、特定ファイルの論理的−物理的マッピングを得ることができる。例えば、ファイルに指定されたLBAに基づき、NVMインターフェイスは、アドレスタリー(tally)を、それがツリー500の頂部ノードから拡張するとき、得られるアドレスタリーがファイルのLBAに一致するまで、増加する。当業者であれば、ツリー500は、任意の適当なツリー構造を有してもよいことが明らかであろう。あるケースでは、ツリー500は、例えば、bツリー又はb*ツリーのように、特定のエントリに対して検索時間を改善するツリー構造を有する。又、当業者であれば、システムの他の適当なコンポーネント(例えば、図1の電子装置100又は図2の電子装置200)がツリー500を維持できることが明らかであろう。例えば、ツリー500は、NVMインターフェイス及び/又はコントロール回路(例えば、図1のコントロール回路112)の頂部で実施されるソフトウェア層により維持される。
更に、LBAに代わってスパンを記憶することにより、より多くのエントリ及びポインタ(例えば、ノード及びNANDポインタ)をツリー500の各ノードに含ませることができる。例えば、ツリー500の各ノードに64バイトが割り当てられ、そして各エントリに4ないし6バイトが割り当てられる場合には、ツリー500の各ノードは、10ないし16個のエントリ(例えば、ポインタ)を記憶することができる。
エントリ512、514、522、524及び532は、各々、NANDポインタ540−544及びスパン545−549を含む。更に、エントリ512、514、522、524及び532は、各々、ページアドレス551−555を含む。ページアドレス551−555の各々は、それに対応するエントリのスタートページアドレスを与える。例えば、図5に示すように、エントリ512は、ファイルG(図4)に対応し、従って、1のスパン545及びP8のページアドレス551を有する。同様に、エントリ514、522、524及び532の各々は、ファイルH−Kに各々対応する。
比較的大きなファイルがNVMへ順次にプログラムされるとき(例えば、メディアファイル、アプリケーション又はシステムファイル)、特定のファイルに対応するデータが、同じスーパーブロック又はスーパーブロックの同じセット(例えば、図3のスーパーブロック0−3)へ記憶される。従って、ファイルは、論理的及び物理的に隣接する(例えば、ファイルは、隣接する論理的アドレスのセット及び隣接する物理的アドレスの対応セットに関連付けられる)。従って、ファイルは、ツリーの単一エントリ(例えば、単一のNANDポインタ)により表わされる。
あるケースでは、ファイルシステムは、小さなランダム書き込み(例えば、複数の小さなファイルに関連したデータ)も発生する。論理的に隣接するこれらの書き込みは、複数のスーパーブロックにわたって分散される。それ故、NVMにおける複数のデータ断片の各々は、ツリーにおける個別の個々のエントリにより表わすことが必要である。例えば、ファイルH−Kの各々は、ツリー500における個別エントリ(例えば、エントリ512、514、522、524及び532の1つ)により表される。
揮発性メモリのスペース制限のために、ツリー500に対して固定量のメモリスペース(例えば、1MB又は100MBのツリーメモリプール)が割り当てられる。最終的に、ツリーメモリプールは、付加的なデータ断片に対して論理的−物理的マッピングをもはやセーブできない点まで減少し得る。
そこで、ツリーメモリプールに対して付加的なメモリを解放するため、NVMインターフェイスは、NVMにおけるデータ断片の数を減少して、ツリーの一部分を平坦化するように試みる。解放されたメモリの量は、ツリーメモリプールに追加されて戻される。例えば、ファイルシステムから書き込み要求を受け取るのに応答して、NVMインターフェイスは、ツリーの少なくとも一部分を平坦化するように選択する。一実施形態において、NVMインターフェイスは、ツリー平坦化機能をコールする。
NVMインターフェイスは、例えば、ツリーの複数のエントリを単一エントリ又はノードへと合成することによってツリーの一部分を平坦化する。これらの複数のエントリは、論理的スペースでは隣接しているが、物理的スペースでは非隣接的にプログラムすることができる。即ち、それらは、NVMの種々のスーパーブロックにおいてランダムに分散されたデータ断片に対応する。従って、エントリに対応するデータを新たなスーパーブロックへ隣接的に再プログラミングすることにより、NVMインターフェイスは、データ断片が物理的及び論理的に隣接するよう保証することができる。
一般的に、ツリーの一部分を平坦化するには、ユーザによってもファイルシステムによっても要求されることのないプログラミング操作が必要となるので、平坦化動作は、システムの全書き込み増幅を増大させる。ここで使用する「書き込み増幅(write amplification)」とは、ファイルシステムの要求とNVMの物理的アクセスとの間の比を指す。書き込み増幅が増大すると、システム性能が低下し、NVMにおける消耗の増加及びシステム電力要求の増加を招く。
それ故、ツリー平坦化動作は、それが必要であるときだけ呼び出さねばならない。例えば、ツリー平坦化機能は、ツリーに使用できるメモリ量が所定スレッシュホールドより少ないときだけ呼び出される。所定スレッシュホールドは、ツリーメモリプール(例えば、ツリーに割り当てられた全メモリ量)のほぼ枯渇点、例えば、ツリーメモリプールの2%に対応する適当な数である。即ち、使用可能なメモリ量が、ツリーメモリプールの2%の所定スレッシュホールドより少ないツリーメモリプールの1%である場合に、条件が満足される。
このような解決策を使用して、NVMインターフェイスは、装置の不要な負担を回避することができる。特に、ツリーのメモリ使用量がツリーメモリプールを枯渇させない場合には、平坦化動作は不要である。更に、ツリーの平坦化を待機することにより、平坦化できる候補ツリーエントリの数が増加する。それ故、NVMインターフェイスは、平坦化のためのエントリの最適セット(例えば、書き込み増幅とメモリ使用量との間に最適なトレードオフを生じるエントリ)を探索する高い確率を有する。
NVMインターフェイスは、合成すべきツリーのエントリを探索するために適当な解決策を使用することができる。例えば、NVMインターフェイスは、ツリーを横切ってスライディングウインドウを移動することができる。ある実施形態では、スライディングウインドウは、ツリーのエントリに対応するエレメントを有するリストである。従って、NVMインターフェイスがツリーを横切ってスライディングウインドウを移動するとき、新たなエントリがリストに追加される。
NVMインターフェイスは、それがツリーを横切ってスライディングウインドウを移動する間に、スライディングウインドウにより現在包囲されているエントリのスパンを示すランニングカウンタも維持する。例えば、図4に戻ると、NVMインターフェイスは、LBA402に関連したツリーを横切ってスライディングウインドウ406を移動する。最初に、ランニングカウンタは、ゼロの値を有し、そしてスライディングウインドウ406は、ファイルA−Eを包囲する。当業者であれば、スライディングウインドウ406は、適当な数のエントリ(例えば、32個のエントリ)を包囲するように構成されることが明らかである。しかしながら、スライディングウインドウ406は、図4では、簡単化のために5つのエントリ(例えば、ファイル)を包囲するように示されている。
NVMインターフェイスは、包囲されたエントリに対応する論理的スペースのサイズをランニングカウンタに追加する。即ち、NVMインターフェイスは、ファイルA−Eに対応するエントリの合計スパン(例えば、82の合計スパン)をランニングカウンタに追加する。次いで、NVMインターフェイスは、ランニングカウンタの現在値を、メモリに記憶された最小スパンと比較する。例えば、最小スパンは、32ビットカウンタに適合できる最大値に最初にセットされる。
ランニングカウンタの現在値が最小スパンより小さい場合には、NVMインターフェイスは、ランニングカウンタの現在値を最小スパンとして置き換える。更に、NVMインターフェイスは、スライディングウインドウのスタートLBAをメモリに記憶する。例えば、ファイルA−E(図4)の場合に、NVMインターフェイスは、82を最小スパンとしてセーブし、そして0をスタートLBAとしてセーブする。対照的に、現在値が最小スパンより大きい場合には、NVMインターフェイスは、メモリに記憶された最小スパン及びスタートLBAの値を保持することができる。
次いで、NVMインターフェイスは、スライディングウインドウ406を単一エントリ(例えば、1ファイル)だけ移動して、スライディングウインドウ406が今やファイルB−Fを包囲するようにする。次いで、NVMインターフェイスは、スライディングウインドウ406により包囲された新たなエントリ(ファイルF)のサイズをランニングカウンタに加算し、そしてスライディングウインドウ406によりもはや包囲されないエントリ(ファイルA)のサイズをランニングカウンタから減算する。図4に示すように、ファイルFに対応するエントリのスパンは、38であり、そしてファイルAに対応するエントリのスパンは、39である。従って、それによって得られるランニングカウンタの値は、81(82+38−39=81)である。
次いで、NVMインターフェイスは、ランニングカウンタの現在値が最小スパンより小さいかどうか検出する。ランニングカウンタの現在値(例えば、81)は、メモリにセーブされた最小スパン(例えば、82)より小さいので、NVMインターフェイスは、ランニングカウンタを最小スパンとして置き換える。更に、NVMインターフェイスは、メモリにセーブされたスタートLBA(例えば、0)を現在スタートLBA(例えば、39)で更新する。
次いで、NVMインターフェイスは、ツリーの連続エントリを通してスライディングウインドウを移動し続け、そしてそれに応じてランニングカウンタを更新し続ける(例えば、スライディングウインドウ406により新たに包囲されたエントリのスパンを加算し、そしてスライディングウインドウ406によってもはや包囲されないエントリのスパンを減算することにより)。次いで、ランニングカウンタの現在値と最小スパンとの間の比較に基づき、NVMインターフェイスは、メモリに記憶された最小スパン及びスタートLBAを置き換えるか又は保持するかのいずれかである。スライディングウインドウがツリーを横切る移動を終了すると、NVMインターフェイスは、最小スパンに対応するツリーのエントリの最適セットを合成することができる。
理想的には、エントリの最適セットは、そのセットにおけるエントリの数に等しいスパンを有する。換言すれば、エントリの最適セットは、連続LBAを伴うファイルのセットに対応し、各エントリは、最小LBAサイズ(例えば、1のLBA)を有する。例えば、図4のLBA402の場合に、ファイルG−Kに対応するエントリのセットは、スライディングウインドウ406に対して最適である(例えば、図5のエントリ512、514、522、524及び532)。別の例として、スライディングウインドウが32個のエントリを包囲する場合には、スライディングウインドウに対するエントリの最適セットは、32個の論理的に連続するエントリで、それらは、各々、単一セクタ(例えば、各々1つのLBA)である。
エントリの最適セットを得た後、NVMインターフェイスは、エントリに対応するデータ断片を、それら断片が物理的に隣接するように再プログラミングするよう選択することができる。例えば、NVMインターフェイスは、NVMからエントリのセットに対応するデータを読み取り、次いで、そのデータを揮発性メモリ(例えば、メモリバッファ)にセーブする。データをセーブした後に、NVMインターフェイスは、データをNVMの新たなスーパーブロックへ逐次にプログラムし、そしてツリーにおけるエントリを平坦化する(例えば、エントリのセットを単一ノード又はエントリへと合成する)。例えば、サイズが各々単一LBAである32個のエントリがあり、且つ各LBAが4Kである場合には、NVMインターフェイスは、NVMにおいてサイズ128Kのデータを再プログラムする必要がある。
図6は、論理的ブロックアドレスの、物理的ページへのマッピング600を示すブロック図である。図6に示すように、ファイルG−Kに対応するデータは、スーパーブロック414へ逐次に再プログラムされている。ファイルの以前の物理的アドレスは、無効としてマークされている(図6に交差線ボックスで示された)。
更に、論理的−物理的マッピングを与えるツリーは、更新することができる。例えば、図7は、更新されたツリー700の一部分のブロック図である。特に、NVMインターフェイスは、エントリのセット(図5のエントリ512、514、522、524及び532)を単一ノード702へと合成する。当業者であれば、エントリのセットがノード又はエントリへと合成されることが明らかであろう。例えば、エントリのセットは、エントリのセットの合計スパンのサイズ、及び/又はノード又はエントリに割り当てられるサイズに基づき、ノード又はエントリのいずれかへと合成される。
図7に示すように、エントリの合成セットのページアドレス704は、P14であり、そして合計スパン706は、5である。LBA120−124(図6)の1つにアクセスするため、NVMインターフェイスは、スパン706を使用してLBAオフセットを計算する。例えば、更新されたツリー700を横断することにより、NVMインターフェイスは、スパンに対するLBAベースが120であることを決定する。このLBAベースに基づいて、NVMインターフェイスは、アクセスされるべきLBAに対応するLBAオフセットを決定する(例えば、アクセスされるべきLBAからLBAベースを減算することにより)。次いで、NVMインターフェイスは、LBAオフセットをスタートページアドレスに加算して、NVMにおける対応する物理的アドレスにアクセスする。
例えば、LBA122にアクセスするために、NVMインターフェイスは、2のLBAオフセットがあることを決定する(例えば、122−120=2)。次いで、NVMインターフェイスは、2のLBAオフセットをP14のスタートページアドレス704に加算して、P16の対応物理的アドレスを得る。これは、LBA122の物理的ページアドレスです。
他の実施形態において、ツリーをスキャンする間にエントリの最適セットが探索されたと決定されると、NVMインターフェイスは、ツリーを横切るスライディングウインドウの移動を停止する。例えば、図4に戻ると、ファイルG−Kを包囲するようにスライディングウインドウ406を移動すると、NVMインターフェイスは、ファイルG−Kに対応するエントリがスライディングウインドウ406にとって最適である(例えば、エントリの各々が1のLBAを有する)と決定する。次いで、NVMインターフェイスは、スライディングウインドウがツリーを横切る移動を終了するのを待機する必要なくツリーのエントリを平坦化することを選択する。
更に別の実施形態において、NVMインターフェイスは、複数のスライディングウインドウを使用して、エントリの最適セットを得る。図8及び9は、本発明の種々の実施形態によるプロセスを例示するフローチャートである。
先ず、図8を参照すれば、高速ツリー平坦化のプロセス800が示されている。プロセス800は、ステップ802において始まり、そしてステップ804において、NVMインターフェイスは、ツリー(例えば、図5のツリー500)に現在使用できるメモリの量が所定のスレッシュホールドより少ないと決定し、ここで、ツリーは、NVM(例えば、図1のNVM120、図2のNVM220、又は図3のNVM300)の論理的スペースと物理的アドレスとの間の論理的−物理的マッピングを記憶する。
ステップ806において、NVMインターフェイスは、ツリーを横切って少なくとも2つのスライディングウインドウ(例えば図4のスライディングウインドウ406及び408)を移動する。少なくとも2つのスライディングウインドウは、異なるサイズを有する。即ち、各スライディングウインドウは、ツリーの異なる数のエントリを包囲する。例えば、第1のスライディングウインドウは、ツリーの32個のエントリを包囲するように構成され、そして第2のスライディングウインドウは、ツリーの128個のエントリを包囲するように構成される。
異なるサイズのスライディングウインドウを使用することにより、スライディングウインドウを1つしか使用しない場合に比して、より最適なエントリセットをツリーにおいて探索することができる。特に、ファイルシステムの割り当てポリシーのために、論理的スペースには同様のサイズのファイルが隣接している。従って、1のスパンをもつ多数のエントリがある場合には、それらのエントリに隣接する新たなエントリも1のスパンをもつ見込みが高い。そのようなケースでは、大きなスライディングウインドウが、小さなスライディングウインドウに比してより最適なエントリを捕獲する。他方、スライディングウインドウが大き過ぎると、スライディングウインドウ内に適合するエントリの幾つかが最小スパンのエントリではない確率も高くなる。
当業者であれば、適当な数(例えば、2、3、4、等)のスライディングウインドウを使用できることが明らかであろう。又、当業者であれば、少なくとも2つのスライディングウインドウは、適当な数のエントリを包囲するように構成できることも明らかであろう。しかしながら、簡単化のため、スライディングウインドウ406及び408は、図4において、各々、5個及び10個のエントリ(例えば、ファイル)を包囲するように示されている。
ある実施形態において、少なくとも2つのスライディングウインドウは、ツリーを横切って連続的に移動する。他の実施形態では、サーチの速度を改善するために、少なくとも2つのスライディングウインドウは、ツリーを横切って並列に移動する。
ステップ808へ続くと、NVMインターフェイスは、ツリーを横切って少なくとも2つのスライディングウインドウが移動するときに、少なくとも2つのスライディングウインドウに対応する少なくとも2つの最小スパンを維持する。例えば、少なくとも2つのスライディングウインドウの各々に対して、NVMインターフェイスは、スライディングウインドウにより新たに包囲されるエントリのスパンをランニングカウンタに加算する。ランニングカウンタは、スライディングウインドウにより包囲されるツリーのエントリの合計スパンに対応する。更に、NVMインターフェイスは、スライディングウインドウによりもはや包囲されないエントリのスパンをランニングカウンタから減算する。次いで、ランニングカウンタの現在値が、揮発性メモリにセーブされた最小スパンと比較される。この比較に基づいて、NVMインターフェイスは、メモリに記憶された最小スパンを置き換えるか又はそれを保持する。更に、NVMインターフェイスは、メモリに記憶されたスタートLBAも置き換えるか又はそれを保持する。次いで、プロセス800は、ステップ810へ進む。
ステップ810において、NVMインターフェイスは、少なくとも2つのスライディングウインドウがツリーを横切る移動を終了したと決定する。次いで、ステップ812において、NVMインターフェイスは、ツリーのエントリのセットを、少なくとも2つの最小スパン間の比較に少なくとも一部分基づいて平坦化することを選択する。例えば、NVMインターフェイスは、少なくとも2つの最小スパンのどちらが小さな値を有するか決定する。
少なくとも2つの最小スパンを比較した後、NVMインターフェイスは、小さな値を伴うスライディングウインドウに対応するエントリのセットを平坦化することを選択する。エントリのセットは、論理的に隣接するエントリを含む。例えば、図4及び5に戻ると、NVMインターフェイスは、スライディングウインドウ406(図4)に対応するエントリ512、514、522、523及び532(図5)を選択する。次いで、プロセス800は、ステップ814で終了となる。
図9は、物理的に隣接するデータ断片をプログラミングするためのプロセスを例示するフローチャートである。ある実施形態では、プロセス900は、プロセス800(図8)の平坦化選択ステップ812を詳細に示すものである。
プロセス900は、ステップ902で始まり、そしてステップ904において、NVMインターフェイスは、エントリのセット(例えば、図5のエントリ512、514、522、523及び532)に対応するデータ(例えば、ユーザデータ)をNVMから読み取る。例えば、図4に戻ると、NVMインターフェイスは、物理的ページアドレスP8、P5、P12、P6及びP11に記憶されたデータを読み取る。
ステップ906へ進み、NVMインターフェイスは、データを揮発性メモリ(例えば、図1のメモリ114)にセーブする。次いで、プロセス900は、ステップ908へ進む。ステップ908において、NVMインターフェイスは、データをNVMの新たなスーパーブロック(例えば、図4のスーパーブロック414)へ逐次に(例えば、書き込みストリームにおいて)プログラムする。次いで、プロセス900は、ステップ910において終了となる。
更に別の実施形態において、NVMインターフェイスは、平坦化すべきエントリの最適セットを見つけるために貪欲解決策を適用する。即ち、最初のエントリ最適セットを見つけると、NVMインターフェイスは、最初のエントリ最適セットに追加されるツリーの付加的な連続エントリをサーチし続ける。これらの付加的なエントリは、追加のプログラミングコストを被ることなく、時々、再プログラミングされる。
図10A及び10Bを参照すれば、平坦化すべきエントリの最適セットを見つけるための貪欲解決策のプロセス1000が示されている。このプロセス1000は、ステップ1002で始まり、そしてステップ1004において、NVMインターフェイス(例えば、図1のNVMインターフェイス118又は図2のNVMインターフェイス218)は、揮発性メモリ(例えば、図1のメモリ114)に記憶されたツリー(例えば、図5のツリー500)に現在使用できるメモリの量が所定のスレッシュホールドより少ないことを検出する。
次いで、ステップ1006において、NVMインターフェイスは、ツリーの複数のエントリを横切ってスライディングウインドウ(例えば、図4のスライディングウインドウ406)を移動し、ここで、スライディングウインドウは、ツリーの所定数のエントリを包囲する。例えば、スライディングウインドウは、32個のエントリ(例えば、NVMにおけるストライプのサイズに等しい)を包囲する。
ステップ1008へ続くと、NVMインターフェイスは、スライディングウインドウにより包囲されるエントリのセットが、そのエントリのセットにおけるエントリの数に等しいスパンを有するかどうか決定する。ステップ1008において、スライディングウインドウにより包囲されるエントリのセットが、そのエントリのセットにおけるエントリの数に等しいスパンをもたないとNVMインターフェイスが決定すると、プロセス1000はステップ1010へ進む。
ステップ1010において、NVMインターフェイスは、スライディングウインドウがツリーを横切る移動を終了したかどうか決定する。ステップ1010において、スライディングウインドウがツリーを横切る移動を終了したとNVMインターフェイスが決定すると、プロセス1000はステップ1012へ進む。
ステップ1012において、NVMインターフェイスは、ツリー平坦化のためにスライディングウインドウにより形成されるツリーのエントリのセットを選択する。例えば、NVMインターフェイスは、メモリにセーブされた1つ以上の値(例えば、最小スパン及びスタートLBA)に対応するエントリのセットを選択する。即ち、エントリのセットは、ツリー内のエントリの他のセットに比して最小のスパンを有する。次いで、プロセス1000は、ステップ1014において終了となる。
ステップ1010において、スライディングウインドウがツリーを横切る移動を終了していないとNVMインターフェイスが決定すると、プロセス1000はステップ1006へ戻る。ステップ1006において、NVMインターフェイスは、ツリーのエントリを横切ってスライディングウインドウを移動し続ける。
ステップ1008へ戻ると、スライディングウインドウにより包囲されるエントリのセットが、そのエントリのセットにおけるエントリの数に等しいスパンを有するとNVMインターフェイスが決定すると、プロセス1000はステップ1016へ進む。換言すれば、エントリのセットは、現在のスライディングウインドウに対するエントリの最適セットとなる。
ステップ1016において、NVMインターフェイスは、スライディングウインドウにより包囲されるエントリの所定数を拡張して、拡張スライディングウインドウ(例えば、図4のスライディングウインドウ408)を発生する。あるケースにおいて、スライディングウインドウが32個のエントリを以前に包囲していた場合に、NVMインターフェイスは、64個のエントリを包囲するようにそのスライディングウインドウを拡張する。
ある実施形態では、NVMインターフェイスは、拡張スライディングウインドウにより包囲されるエントリのセットのスパンをストライプ境界と整列させるように試みる。例えば、図3に戻ると、各ストライプ(例えば、ストライプ302又は304)は、32個のLBAを記憶することができる。スライディングウインドウにより包囲されるエントリの最適セットのスパンが32である場合には、NVMインターフェイスは、スライディングウインドウのエントリの所定数をストライプのサイズの倍数で拡張する。その結果、拡張スライディングウインドウにより包囲されるエントリの最適セットは、64LBA、96LBA、等のスパンを有することができる。
別の例として、スライディングウインドウによって包囲されるエントリの最適セットのスパンがストライプのサイズより小さい場合には(例えば、48LBAのスパン)、スライディングウインドウは、ストライプ境界と整列するように拡張される。即ち、NVMインターフェイスは、スライディングウインドウのエントリの所定数を64個のエントリへ拡張する。上述したように、アクセス時間は、特定のストライプに含まれるページに対して同じままであるから、全ストライプを埋めるユーザデータをプログラミングするための時間は、ストライプ未満を埋めるユーザデータをプログラミングするための時間と同じである。
更に別の例として、NVMインターフェイスは、NVMのブロック又はスーパーブロック(例えば、図4のスーパーブロック414)内の現在位置に基づきスライディングウインドウをどのように拡張するか決定する。例えば、スーパーブロックのストライプが現在データで途中まで埋められている場合には、NVMインターフェイスは、エントリの所定数をストライプのサイズの半分(例えば、16エントリ)だけ拡張する。
次いで、ステップ1018において、NVMインターフェイスは、拡張スライディングウインドウを、ツリーの複数のエントリの少なくとも一部分に適用する。特に、NVMインターフェイスは、拡張スライディングウインドウに追加できる小さなスパン(例えば、1、2、3又は4LBA)を有するツリーの付加的な連続エントリをサーチする。次いで、プロセス1000はステップ1020へ進む。
ステップ1020において、NVMインターフェイスは、拡張スライディングウインドウにより発生されるランニングカウンタの値が所定値に等しいかどうか決定する。例えば、NVMインターフェイスは、ランニングカウンタの値(例えば、拡張スライディングウインドウにより包囲されるエントリのセットに対する合計スパン)がストライプサイズの倍数に等しいかどうか決定する。
ステップ1020において、ランニングカウンタの値が所定値に等しくないとNVMインターフェイスが決定すると、プロセス1000はステップ1012へ進む。特に、NVMインターフェイスは、拡張スライディングウインドウにより包囲されるエントリのセットの合計スパンが1つ以上のストライプのサイズより小さいか又は大きいか決定する。この決定に基づいて、エントリの元のセットが、拡張スライディングウインドウにより包囲されたエントリのセットより好ましいと考えられてもよい。ステップ1012において、NVMインターフェイスは、ツリー平坦化に対してスライディングウインドウにより発生されたツリーのエントリのセットを選択することができる。
ステップ1020に戻ると、ランニングカウンタの値が所定値に等しいとNVMインターフェイスが決定すると、プロセス1000は、ステップ1022へ進む。ステップ1022において、NVMインターフェイスは、ツリー平坦化に対して拡張スライディングウインドウにより発生されたツリーのエントリのセットを選択する。プロセス1000は、ステップ1014において終了となる。
更に別の実施形態において、ツリーにおいて合成できる単一の最適なエントリセットを探索するのではなく、NVMインターフェイスは、ツリーの一回の通過でエントリの複数候補セットを見つけることができる。特に、単一のランニングカウンタを最小スパン及びスタートLBAと共に維持するのではなく、NVMインターフェイスは、プライオリティキューを揮発性メモリに維持することができる。
NVMインターフェイスは、スライディングウインドウにより包囲される複数のエントリに関連したパラメータをプライオリティキューに挿入することを試みる。次いで、NVMインターフェイスは、スライディングウインドウをエントリの数だけツリー内で前方に移動し、ここで、エントリの数は、プライオリティキューの現在状態に少なくとも一部分基づくものである。スライディングウインドウがツリーを横切る移動を終了すると、NVMインターフェイスは、プライオリティキューを使用してエントリの最適セットを探索することができる。
ここで使用する「プライオリティキュー」とは、1つ以上のデータアイテムを含む適当なデータ構造(例えば、順序付けされたリスト)であり、各データアイテムは、プライオリティ番号に関連している。例えば、最小プライオリティキューは、低いプライオリティ番号をもつエレメントがリストの前部へ移動し、そして高いプライオリティ番号をもつエレメントがリストの端へ移動するリストである。別の例として、最大プライオリティキューは、高いプライオリティ番号をもつエレメントがリストの前部に向かって移動し、そして低いプライオリティ番号をもつエレメントがリストの端へ移動するリストである。
図11は、プライオリティキューを使用してツリーを平坦化するプロセス1100のフローチャートである。プロセス1100は、ステップ1102で始まり、そしてステップ1104において、NVMインターフェイス(例えば、図1のNVMインターフェイス118又は図2のNVMインターフェイス218)は、揮発性メモリ(例えば、図1のメモリ114)に記憶されたツリー(例えば、図5のツリー500)に現在使用できるメモリの量が所定スレッシュホールドより低いことを検出する。
ステップ1106において、NVMインターフェイスは、スライディングウインドウ(例えば、図4のスライディングウインドウ406)に適合するツリーの複数のエントリ(例えば、図4のファイルA−Eに対応するエントリ)を検出する。複数のエントリを検出した後に、プロセス1100は、ステップ1108へ進む。
ステップ1108において、NVMインターフェイスは、プライオリティキューがいっぱいであるかどうか決定する。例えば、プライオリティキューは、固定サイズ(例えば、20個のエレメント)を有し、そして空の値のセットへと初期化される。プライオリティキューがいっぱいでない(例えば、プライオリティキュー内のエレメントが20未満である)場合には、プロセス1100はステップ1110へ進む。
ステップ1110において、NVMインターフェイスは、複数のエントリに関連したパラメータをプライオリティキューに挿入する。プライオリティキューに追加されるパラメータは、複数のエントリに関連した合計スパン及びスタートLBAを含む。
例えば、ファイルA−E(図4)に対して、NVMインターフェイスは、関連パラメータをプライオリティキューに第1エレメントとして挿入する。特に、NVMインターフェイスは、0のスタートLBAをデータアイテムとして及び82の合計スパン(82−0=82)を関連プライオリティ番号として挿入する。
当業者であれば、それに代わって又はそれに加えて、他の適当なパラメータをプライオリティキューに含ませられることが明らかであろう。例えば、スライディングウインドウが、ツリーを横切って移動するときに一定数のエントリを包囲する場合は、スパンがプライオリティキューにセーブされる。しかしながら、スライディングウインドウが、ツリーを横切って移動するときに可変数のエントリを包囲する場合は、比(複数のエントリの合計スパンと複数のエントリ内のエントリ数との間の比)がプライオリティキューにセーブされる。
次いで、ステップ1112において、NVMインターフェイスは、スライディングウインドウをツリーにおいて前方に単一エントリだけ移動させる。例えば、図4を参照すれば、NVMインターフェイスは、ファイルB−Fに対応するエントリを包囲するようにスライディングウインドウ406を移動させる。
ステップ1114へと続き、NVMインターフェイスは、スライディングウインドウがツリーの端を通過したかどうか決定する。ステップ1114において、スライディングウインドウがツリーの端を通過しないとNVMインターフェイスが決定すると、プロセス1100は、ステップ1108へ戻り、そこで、NVMインターフェイスは、更新されたエントリ(例えば、ファイルB−Fに対応するエントリ)に関連したパラメータをプライオリティキューに挿入するよう試みる。
ステップ1114において、スライディングウインドウがツリーの端を通過したとNVMインターフェイスが決定すると、プロセス1100はステップ1116において終了となる。
ステップ1108に戻ると、プライオリティキューがいっぱいである(例えば、プライオリティキューに既に20個のエレメントがある)とNVMインターフェイスが決定すると、プロセス1100はステップ1118へ進む。
例えば、図12は、プライオリティキュー1202のブロック図1200である。プライオリティキュー1202は、4つのエレメント1204−1210を備え、各エレメントは、各々、ファイルC−G、D−H、E−I及びF−J(図4)に対応する。当業者であれば、プライオリティキュー1202は、適当な数のエレメントを含むことが明らかであろう。しかしながら、簡単化のために、プライオリティキュー1202は、4つのエレメントを含むように示されている。従って、プライオリティキュー1202は、いっぱいである。
エレメント1204−1210の各々は、合計スパン及びスタートLBAに関連している。合計スパンは、プライオリティ番号として機能する。図示されたように、プライオリティキュー1202は、最小プライオリティキューであり、エレメントは、合計スパンに基づいて増加順に分類される。従って、最低のプライオリティ番号(例えば、最低の合計スパン)を伴うエレメントは、キューの前部へ移動される。新たなエレメントは、それに関連した合計スパンに基づいてプライオリティキュー1202へ挿入される。
図11に戻ると、ステップ1118において、NVMインターフェイスは、複数のエントリに関連したパラメータが挿入可能であるかどうか決定する。例えば、スライディングウインドウ406(図4)が、ファイルG−Kに対応する複数のエントリを現在包囲する場合には、NVMインターフェイスは、エントリ512、514、522、524及び532に関連したパラメータがプライオリティキュー1202(図12)に挿入可能であるかどうか決定する。
より詳細には、複数のエントリの合計スパンが、プライオリティキューに既に記憶されている合計スパンと比較される。合計スパンが、プライオリティキュー1202における最高の合計スパンより小さい場合には、キュー1202の適当な位置にパラメータを挿入することができる。例えば、ファイルG−Kに対応する合計スパン(例えば、5)は、プライオリティキュー1202における最高合計スパン(例えば、81)より小さいので、NVMインターフェイスは、エントリ512、514、522、524及び532に関連したパラメータが挿入可能であると決定する。或いは又、合計スパンがプライオリティキュー1202における最高合計スパンより大きい場合には、NVMインターフェイスは、パラメータを破棄する。
パラメータが挿入可能であるとNVMインターフェイスが決定すると、プロセス1100はステップ1120へ進む。ステップ1120において、NVMインターフェイスは、パラメータをプライオリティキューに挿入する。例えば、ファイルG−K(図4)の5の合計スパン及び120のスタートLBAが、エレメント1212としてプライオリティキュー1202(図12)に挿入される。更に、プライオリティキュー1202は、4エレメントの固定サイズであるので、エレメント1212を挿入すると、キュー1202の端のエレメント(例えば、エレメント1204)を退去させる。
パラメータを挿入した後、プロセス1100は、ステップ1122へ進む。ステップ1122において、NVMインターフェイスは、複数のエントリにおけるエントリ数に等しいエントリ数だけスライディングウインドウをツリー内で前方に移動させる。例えば、図4に戻ると、NVMインターフェイスは、スライディングウインドウ406を5つのエントリだけ前方に移動させる。即ち、新たに移動されるスライディングウインドウ406の第1エントリは、ファイルLに対応する。プロセス1100は、次いで、ステップ1114へ進み、NVMインターフェイスは、スライディングウインドウがツリーの端を通過したかどうか決定する。
ステップ1118へ戻ると、パラメータが挿入可能でないとNVMインターフェイスが決定すると、プロセス1100は、ステップ1112へ進む。ステップ1112において、NVMインターフェイスは、スライディングウインドウをツリーにおいて前方に単一エントリだけ移動させる。
このような解決策を使用し、NVMインターフェイスは、論理的スペース内でバラバラであるエントリの複数の候補セットを探索することができ、エントリの各セットは、ツリーにおいて単一のエントリ又はノードとして合成される。その結果、NVMインターフェイスは、多数のツリー平坦化動作にわたってツリーのスキャニングを償却する。これが特に有用であるのは、ツリーのスキャニングが処理効率に関してコストがかかるからである(例えば、多数のメモリ動作及びキャッシュスラッシュを必要とする)。従って、NVMインターフェイスが、ツリーを1回通過するときに複数の候補を形成できる場合には、システム効率を改善することができる。更に、スライディングウインドウにより包囲されるエントリ数に等しいエントリ数だけスライディングウインドウをツリー内で前方に移動させることにより、NVMインターフェイスは、プライオリティキューに関連パラメータを挿入した後に同じエントリを再考慮する必要性を回避することができる。
ある実施形態では、NVMインターフェイスは、プロセス1100(図11)に対して複数のスライディングウインドウ又は貪欲アルゴリズムを合成する。例えば、プロセス800(図8)と同様のプロセスを使用して、NVMインターフェイスは、2つ以上のスライディングウインドウに適合するエントリを検出する。次いで、NVMインターフェイスは、2つ以上のスライディングウインドウのエントリに関連したパラメータを2つ以上のプライオリティキューに挿入するよう試み、各プライオリティキューは、2つ以上のスライディングウインドウの1つに関連付けられる。
別の例として、プロセス1000(図10A及び10B)と同様のプロセスを使用して、NVMインターフェイスは、プライオリティキューに基づいて、エントリの最適セットが検出されたかどうか決定する。特に、スライディングウインドウにより包囲されるエントリの最適セットの合計スパンは、そのエントリの最適セットにおけるエントリ数に等しい値を有する。即ち、32個のエントリを包囲するスライディングウインドウの場合に、エントリの最適セットの合計スパンも、32である。
エントリの最適セットが検出されたとの決定に応答して、NVMインターフェイスは、スライディングウインドウにより包囲されるエントリの所定数を拡張して、拡張スライディングウインドウを発生する。次いで、NVMインターフェイスは、その拡張スライディングウインドウをツリーに適用する。
更に別の実施形態において、ツリーに現在使用できるメモリ量が所定スレッシュホールドより少ないときだけツリーをサーチするのではなく、NVMインターフェイスは、ツリー更新を遂行しながらエントリの候補セットのプライオリティキューを維持する。特に、NVMインターフェイスがツリーのノードを更新する間に(例えば、1つ以上のエントリを追加し、1つ以上のエントリを除去し、及び/又は1つ以上のエントリのサイズを変更することにより)、NVMインターフェイスは、ノードのコンテンツを解凍してメモリ(例えば、図1のメモリ114)へ読み出す必要がある。このプロセス中に、ノードは既に解凍されているので、NVMインターフェイスは、ノードに関連したパラメータを若干の付加的な動作のみで容易に得ることができる。これらのパラメータは、次いで、プライオリティキューにセーブされる。
プライオリティキュー1202(図12)と同様に、ツリーの更新中に維持されるプライオリティキューは、適当な数のエレメントを含むことができる。各エレメントは、例えば、ノードのメリット、合計スパン、及び/又はスタートLBAのような1つ以上のパラメータに関連付けられる。
図13は、ツリー更新中に維持されるプライオリティキューを使用してツリーを平坦化するプロセス1300のフローチャートである。このプロセス1300は、ステップ1302で始まり、そしてステップ1304において、NVMインターフェイス(例えば、図1のNVMインターフェイス118又は図2のNVMインターフェイス218)は、揮発性メモリ(例えば、図1の揮発性メモリ114)に記憶されたツリーのノードにおいて更新を遂行し、ノードは、複数のエントリを含む。
次いで、ステップ1306において、NVMインターフェイスは、複数のエントリの数が所定値より大きいかどうか検出する。従って、効率を改善するために、NVMインターフェイスは、ノードが比較的いっぱいであるか又は高い使用量を有する場合にノードをプライオリティキューに挿入すべきかどうかだけ考慮すればよい。あるケースでは、例えば、NVMインターフェイスは、ノードが比較的いっぱいであるかどうか決定するためにフィルタを適用することができる。或いは又、NVMインターフェイスは、ノードに関連した使用量を決定してもよい。
複数のエントリの数が所定値より大きいとNVMインターフェイスが検出すると、プロセス1300はステップ1308へ進む。ステップ1308において、NVMインターフェイスは、ノードに関連したパラメータをプライオリティキューに挿入するよう試みる。例えば、NVMインターフェイスは、ノードの入力に対する合計スパン及びスタートLBAを得る。ノードは、可変数のエントリ(例えば、10ないし16のエントリ)記憶できるので、NVMインターフェイスは、ノードのメリットを計算する必要があり、ここで、メリットは、プライオリティキューにおけるプライオリティ番号として機能する。ある実施形態では、計算されたメリットは、エントリの合計スパンとエントリの数との間の比に基づく。例えば、計算されたメリットは、エントリの合計スパンとエントリの数との間の比に等しい。別の例として、それにより生じる比に重みを乗算して、メリットの整数値を発生する。これら実施形態の両方において、プライオリティキューは、最小プライオリティキューであり、プライオリティキュー内のエレメントは、メリットに基づいて増加順に記憶される。
更に別の例として、メリットは、計算されたメリットの逆数である。従って、プライオリティキューは、最大プライオリティキューであり、エレメントは、メリットに基づいて減少順に記憶される。更に別の実施形態において、エントリの数を使用してメリットを計算するのではなく、NVMインターフェイスは、バイト使用量を使用してメリットを計算する。
図14は、プライオリティキュー1402のブロック図1400である。プライオリティキュー1402は、4つのエレメントを含み、各エレメントは、メリット、合計スパン及びスタートLBAに関連している。図示されたように、プライオリティキュー1402は、最小プライオリティキューであり、エレメントは、メリットに基づいて増加順に記憶される。対応的に、最低プライオリティ番号(例えば、最低メリット)を伴うエレメントは、キューの前部へ移動する。当業者であれば、プライオリティキュー1402は、適当な数のエレメントを含むことが明らかであろう。しかしながら、簡単化のために、プライオリティキュー1402は、4つのエレメントを含むように示されている。
上述したように、メリットは、エントリの合計スパンとエントリの数との間の比に等しい。従って、エレメント1404に対応するノードが10個のエントリを有すると仮定すれば、ノードのメリットは、42の値を有し、これは、エントリの合計スパンとノードのエントリ数との間の比(420/10=42)に等しい。エレメント1406−1410のメリットについても同様の計算を行うことができる。
挿入されるべきノードのメリットが、プライオリティキュー1402に現在記憶されている最高メリットより小さい場合には、NVMインターフェイスは、その関連パラメータをキュー1402の適当な位置に挿入する。しかしながら、ノードのメリットが、プライオリティキュー1402に現在記憶されている最高メリットより大きい場合には、NVMインターフェイスは、その関連パラメータを破棄する。
図13のステップ1306に戻ると、複数のエントリの数が所定値より少ないとNVMインターフェイスが検出した場合には、プロセス1300は、ステップ1310へ進む。特に、NVMインターフェイスは、ノードがいっぱいでないことを決定する。
ステップ1310において、NVMインターフェイスは、プライオリティキューにノードを挿入するよう試みるまで待機する。即ち、NVMインターフェイスは、ノードをバイパスし、そして付加的なエントリがノードに追加される(例えば、使用量が増加する)まで待機する。
当業者であれば、ツリーの複数ノードの場合にはサブプロセス1340(図13に破線ボックスで示された)が実行されることが明らかであろう。特に、NVMインターフェイスは、更新されているツリーの各ノードにわたって繰り返し、そしてノードをプライオリティキューに追加するよう試みることができる。
ステップ1310及び1308の各々から、プロセス1300は、ステップ1312へ進む。特に、ステップ1312において、NVMインターフェイスは、ツリーに現在使用できるメモリの量が所定のスレッシュホールドより少ないことを検出する。次いで、ステップ1314において、NVMインターフェイスは、プライオリティキューに少なくとも一部分基づいてツリーの少なくとも一部分を合成する。
例えば、プライオリティキューに基づき、NVMインターフェイスは、合成できるエントリを有する最適なノードを決定する。従って、最小プライオリティキューの場合には、NVMインターフェイスは、プライオリティキュー内の第1エレメントを最適なノードとして取り上げる。ツリーの各ノードが10ないし16個のエントリを記憶できる場合に、最適なノードは、16個のエントリを含み、各エントリは、1つのLBAのスパンを有する。
ある実施形態では、NVMインターフェイスが最適なノードを決定すると、NVMインターフェイスは、ツリーに必要な付加的なメモリの量が、最適なノードのエントリを合成することにより解放できるメモリの量を越えるかどうか検出する。必要な付加的なメモリの量が、エントリの合成により解放できるメモリの量以下であることをNVMインターフェイスが検出すると、NVMインターフェイスは、ツリーの付加的なサーチを行う必要なくそれらのエントリを合成することができる。
しかしながら、必要な付加的なメモリの量が、エントリの合成により解放できるメモリの量より大きいことをNVMインターフェイスが検出すると、NVMインターフェイスは、他の適当なプロセスを使用して、平坦化すべきエントリの別のセットを見つけることができる。例えば、NVMインターフェイスは、ツリーを横切って少なくとも1つのスライディングウインドウを移動し、そして少なくとも1つのスライディングウインドウを使用してツリーの少なくとも一部分を合成することができる。例えば、NVMインターフェイスは、図8、10A、10B及び11のプロセス各々800、1000及び1100の1つ以上と同様のプロセスを使用することができる。プロセス1300は、次いで、ステップ1316において終了となる。
ツリーの余すところのないサーチに比して、上述した解決策は、比較的短時間内に良好な平坦化候補を発生することができる。更に、メモリは、広範囲なツリー再バランス動作を必要とせずにツリー平坦化の後に直ちに解除される(例えば、合計スパンは、親ノードにおいてアドレスすることができる)。
図8、9、10A−10B、11及び13のプロセス800、900、1000、1100及び1300は、システムの1つ以上のコンポーネント(例えば、図1の電子装置100又は図2の電子装置200)によって実行されることを理解されたい。例えば、プロセスの少なくとも幾つかのステップは、NVMインターフェイス(例えば、図1のNVMインターフェイス118又は図2のNVMインターフェイス218)により遂行される。当業者であれば、1つ以上のステップがコントロール回路(例えば、図1のSoCコントロール回路112)によって遂行されることが明らかであろう。
更に、図8、9、10A−10B、11及び13のプロセス800、900、1000、1100及び1300は、単なる例示に過ぎないことを理解されたい。本発明の範囲から逸脱せずに、いずれのステップを除去、変更又は結合することもできるし、又、いずれの付加的なステップを追加することもできる。
本発明の以上に述べた実施形態は、例示のためのものであり、これに限定されるものではない。
100:電子装置
110:システムオンチップ(SoC)
112:SoCコントロール回路
114:メモリ
118:NVMインターフェイス
120:不揮発性メモリ(NVM)
200:電子装置
210:ファイルシステム
212:NVMドライバ
216:NVMバスコントローラ
218:NVMインターフェイス
220:NVM
300:NVM
302、304:ストライプ
400:マッピング
402:論理的ブロックアドレス(LBA)
404:物理的アドレス
406:スライディングウインドウ
500:ツリー
502、510、520、530:ノード
503−505、512、514、522、524、532、534:エントリ
540−544:NANDポインタ
600:マッピング
700:更新されたツリー

Claims (23)

  1. 電子装置のコントロール回路を使用して、ツリーに現在使用できるメモリの量が所定のスレッシュホールドより少ないことを検出する段階であって、前記ツリーは、不揮発性メモリ(NVM)の論理的スペースと物理的アドレスとの間の論理的−物理的マッピングを記憶するものである段階と、
    前記コントロール回路を使用して、メモリインターフェイスが前記ツリーを横切って少なくとも2つのスライディングウインドウを移動させる段階と、
    前記電子装置の揮発性メモリを使用して、前記少なくとも2つのスライディングウインドウに対応する少なくとも2つの最小スパンを、前記メモリインターフェイスがその少なくとも2つのスライディングウインドウ前記ツリーを横切って移動させるときに、維持する段階と、
    前記コントロール回路を使用して、前記少なくとも2つのスライディングウインドウが前記ツリーを横切る移動を終了したことを決定する段階と、
    前記コントロール回路を使用して、前記ツリーのノードに含まれるエントリのセットを、前記少なくとも2つの最小スパン間の比較に少なくとも一部分基づき平坦化することを選択する段階と、を備えた高速ツリー平坦化方法。
  2. 前記少なくとも2つのスライディングウインドウは、各々、前記ツリーの異なる数のエントリを包囲する、請求項1に記載の方法。
  3. 前記エントリのセットは、論理的に隣接するエントリを含む、請求項1又は2に記載の方法。
  4. 前記少なくとも2つの最小スパンを維持する段階は、
    前記少なくとも2つのスライディングウインドウの各々に対し、前記コントロール回路を使用して、前記スライディングウインドウにより新たに包囲されるエントリのスパンをランニングカウンタに加算する段階、及び
    前記スライディングウインドウによりもはや包囲されないエントリのスパンを前記ランニングカウンタから減算する段階、
    を含む請求項1又は2に記載の方法。
  5. 前記コントロール回路を使用して、前記ランニングカウンタを、前記揮発性メモリにセーブされた最小スパンと比較する段階、
    前記コントロール回路を使用して、前記ランニングカウンタが前記最小スパンより小さいかどうか決定する段階、及び
    前記ランニングカウンタが前記最小スパンより小さいとの前記決定に応答し、前記コントロール回路を使用して、前記ランニングカウンタを最小スパンとして置き換える段階、を更に含む請求項4に記載の方法。
  6. 前記ランニングカウンタが前記最小スパンより大きいとの前記決定に応答し、前記コントロール回路を使用して、前記最小スパンを保持する段階を更に含む、請求項5に記載の方法。
  7. 前記選択段階は、前記少なくとも2つの最小スパンのどちらが小さな値を有するか決定することを含む、請求項1又は2に記載の方法。
  8. 前記少なくとも2つのスライディングウインドウは、ツリーを横切って並列に移動する及びツリーを横切って連続的に移動する、の少なくとも一方である、請求項1又は2に記載の方法。
  9. 不揮発性メモリ(NVM)と、
    ノードに含まれる複数のエントリを含むツリーであって、前記NVMの論理的スペースと物理的アドレスとの間の論理的−物理的マッピングを与えるツリーを記憶するための揮発性メモリと、
    メモリインターフェイスであって、
    前記ツリーに現在使用できるメモリの量が所定のスレッシュホールドより少ないことを検出し、
    前記ツリーの複数のエントリを横切ってスライディングウインドウを移動させ、スライディングウインドウは、前記ツリーの所定数のエントリを包囲するものであり、
    前記スライディングウインドウにより包囲されたエントリのセットがそのエントリのセットにおけるエントリ数に等しいスパンを有することを決定し、
    前記スライディングウインドウにより包囲された所定数のエントリを拡張して、拡張スライディングウインドウを発生し、
    前記拡張スライディングウインドウを前記ツリーの複数のエントリの少なくとも一部分に適用
    前記拡張スライディングウインドウにより発生されたランニングカウンタの値が所定値に等しいかどうか決定し、
    前記拡張スライディングウインドウにより発生されたランニングカウンタの値が所定値に等しいとの決定に応答して、前記拡張スライディングウインドウにより発生されたツリーのエントリのセットをツリー平坦化のために選択する、
    ように動作するコントロール回路を含むメモリインターフェイスと、
    を備えたシステム。
  10. 前記コントロール回路は、前記スライディングウインドウの所定数のエントリを、前記NVMのストライプのサイズの倍数で拡張するように動作する、請求項9に記載のシステム。
  11. 前記コントロール回路は、前記スライディングウインドウを、ストライプ境界と整列させるように拡張するよう動作する、請求項9又は10に記載のシステム。
  12. 前記拡張ウインドウにより発生されたランニングカウンタの値が所定値に等しくないとの決定に応答して、前記コントロール回路は、前記スライディングウインドウにより発生されたツリーのエントリのセットをツリー平坦化のために選択するように動作する請求項に記載のシステム。
  13. 前記NVMと通信するためのバスコントローラを更に備え、前記コントロール回路は、
    前記エントリのセットに対応するデータを前記NVMから読み取るように前記バスコントローラに指令し、
    前記データを前記揮発性メモリにセーブし、
    前記データを前記NVMのスーパーブロックへプログラムするように前記バスコントローラに指令する、
    ように動作する請求項12に記載のシステム。
  14. 不揮発性メモリ(NVM)にアクセスするためのメモリインターフェイスにおいて、
    揮発性メモリに記憶されるツリーに現在使用できるメモリの量が所定のスレッシュホールドより少ないことを検出し、
    スライディングウインドウに適合するツリーのノードに含まれる第1の複数のエントリを検出し、
    前記第1の複数のエントリに関連したパラメータをプライオリティキューにエレメントとして挿入するよう試み、
    前記スライディングウインドウをツリーにおいて前方にエントリの数だけ移動させ、そのエントリの数は、前記プライオリティキューの現在状態に少なくとも一部分基づくものである、
    ツリー平坦化のためのスライディングウインドウによって生成されたツリーのエントリのセットを選択する、
    ように動作するコントロール回路を備えたメモリインターフェイス。
  15. 前記コントロール回路は、
    前記スライディングウインドウが前記ツリーを横切る移動を終了したことを検出し、
    前記プライオリティキューを使用してエントリの最適セットを探索する、
    ように動作する請求項14に記載のメモリインターフェイス。
  16. 前記コントロール回路は、更に、
    前記プライオリティキューがいっぱいであるかどうか決定し、
    前記プライオリティキューがいっぱいでないとの決定に応答して、前記第1の複数のエントリに関連したパラメータを前記プライオリティキューにエレメントとして挿入し、
    前記スライディングウインドウをツリーにおいて前方に1つのエントリだけ移動させる、ように動作する請求項14又は15に記載のメモリインターフェイス。
  17. 前記プライオリティキューがいっぱいであるとの決定に応答して、前記コントロール回路は、更に、
    前記第1の複数のエントリに関連したパラメータが挿入可能であるかどうか決定し、
    前記パラメータが挿入可能であるとの決定に応答して、前記パラメータを前記プライオリティキューにエレメントとして挿入し、
    前記スライディングウインドウをツリーにおいて前方に前記第1の複数のエントリにおけるエントリ数に等しいエントリ数だけ移動させる
    ように動作する請求項16に記載のメモリインターフェイス。
  18. 前記コントロール回路は、更に、前記プライオリティキューの端においてエレメントを退去させるように動作する、請求項17に記載のメモリインターフェイス。
  19. 前記パラメータが挿入可能でないとの決定に応答して、前記コントロール回路は、前記スライディングウインドウをツリーにおいて前方に1つのエントリだけ移動させるように動作する、請求項17に記載のメモリインターフェイス。
  20. 前記プライオリティキューは、順序付けされたリストであり、低いプライオリティ番号を伴うエレメントは、リストの前部へ移動し、そして高いプライオリティ番号を伴うエレメントは、リストの後部へ移動する、請求項14又は15に記載のメモリインターフェイス。
  21. 前記コントロール回路は、
    付加的なスライディングウインドウに適合するツリーの第2の複数のエントリを検出し、更に、
    前記第1の複数のエントリに関連したパラメータ及び前記第2の複数のエントリに関連したパラメータを少なくとも2つのプライオリティキューにエレメントとして挿入するよう試み、前記少なくとも2つのプライオリティキューの各々は、前記スライディングウインドウ及び付加的なスライディングウインドウの一方に関連付けられる、請求項14又は15に記載のメモリインターフェイス。
  22. 前記コントロール回路は、
    前記プライオリティキューに基づき、エントリの最適セットが検出されたかどうか決定し、
    エントリの最適セットが検出されたとの決定に応答して、前記スライディングウインドウにより包囲される所定数のエントリを拡張して、拡張スライディングウインドウを発生し、そして
    前記拡張スライディングウインドウを前記ツリーに適用する、
    ように動作する請求項14又は15に記載のメモリインターフェイス。
  23. ツリーに現在使用できるメモリの量が所定のスレッシュホールドより少ないことを検出する手段であって、前記ツリーは、不揮発性メモリ(NVM)の論理的スペースと物理的アドレスとの間の論理的−物理的マッピングを記憶するものである手段と、
    前記ツリーを横切って少なくとも2つのスライディングウインドウを移動させる手段と、
    前記少なくとも2つのスライディングウインドウに対応する少なくとも2つの最小スパンを、その少なくとも2つのスライディングウインドウが前記ツリーを横切って移動させるときに、維持する手段と、
    前記少なくとも2つのスライディングウインドウが前記ツリーを横切る移動を終了したことを決定する手段と、
    前記ツリーのノードに含まれるエントリのセットを、前記少なくとも2つの最小スパン間の比較に少なくとも一部分基づき平坦化することを選択する手段と、
    を備えた高速ツリー平坦化システム。
JP2012221682A 2011-09-16 2012-09-14 不揮発性メモリを有するシステムのための高速ツリー平坦化 Expired - Fee Related JP5709814B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/234,954 US8924632B2 (en) 2011-09-16 2011-09-16 Faster tree flattening for a system having non-volatile memory
US13/234,954 2011-09-16

Publications (2)

Publication Number Publication Date
JP2013065310A JP2013065310A (ja) 2013-04-11
JP5709814B2 true JP5709814B2 (ja) 2015-04-30

Family

ID=47002646

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012221682A Expired - Fee Related JP5709814B2 (ja) 2011-09-16 2012-09-14 不揮発性メモリを有するシステムのための高速ツリー平坦化

Country Status (7)

Country Link
US (1) US8924632B2 (ja)
EP (1) EP2570914A3 (ja)
JP (1) JP5709814B2 (ja)
KR (2) KR101428189B1 (ja)
CN (1) CN102999429B (ja)
TW (2) TWI567553B (ja)
WO (1) WO2013040538A1 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8838882B1 (en) * 2012-03-19 2014-09-16 Google Inc. Multi-level promotion caching
CN103117922B (zh) * 2013-02-20 2014-06-11 浪潮电子信息产业股份有限公司 一种双重滑动窗口实现报文查找的方法
CN104065906B (zh) * 2014-07-09 2017-02-15 珠海全志科技股份有限公司 数字录像设备的录像方法及装置
EP3256939A4 (en) * 2015-02-10 2018-08-29 Pure Storage, Inc. Storage system architecture
CN106294189B (zh) * 2015-05-25 2020-09-25 中兴通讯股份有限公司 内存碎片整理方法及装置
US20190012259A1 (en) * 2017-07-06 2019-01-10 Futurewei Technologies, Inc. Lba eviction in pcm media
KR102619954B1 (ko) * 2018-03-29 2024-01-02 삼성전자주식회사 데이터를 처리하기 위한 방법 및 이를 지원하는 전자 장치
US10592427B2 (en) 2018-08-02 2020-03-17 Micron Technology, Inc. Logical to physical table fragments
CN110442531B (zh) * 2019-08-08 2021-10-26 深圳忆联信息系统有限公司 基于固态硬盘的读性能提升方法、装置和计算机设备
JP7048650B2 (ja) * 2020-02-04 2022-04-05 キオクシア株式会社 メモリ装置及び方法
US20220075830A1 (en) * 2020-09-10 2022-03-10 EMC IP Holding Company LLC Resumable ordered recursive traversal of an unordered directory tree
CN112115126A (zh) * 2020-09-29 2020-12-22 北京人大金仓信息技术股份有限公司 集合数据类型的处理方法、装置和数据库管理系统
CN114281248B (zh) * 2021-11-29 2022-12-09 深圳三地一芯电子有限责任公司 一种提升ram读写性能的方法、电子设备及介质

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5247634A (en) 1990-03-20 1993-09-21 Hewlett-Packard Company Method of managing memory allocation by association of memory blocks with a tree structure
US5604902A (en) 1995-02-16 1997-02-18 Hewlett-Packard Company Hole plugging garbage collection for a data storage system
US7620769B2 (en) 2000-01-06 2009-11-17 Super Talent Electronics, Inc. Recycling partially-stale flash blocks using a sliding window for multi-level-cell (MLC) flash memory
US7035989B1 (en) 2000-02-16 2006-04-25 Sun Microsystems, Inc. Adaptive memory allocation
JP3694501B2 (ja) * 2002-10-30 2005-09-14 松下電器産業株式会社 記憶装置
US7272698B2 (en) 2003-03-19 2007-09-18 Autodesk, Inc. Heap memory management
US8203972B2 (en) 2004-06-30 2012-06-19 Sap Ag Method and system for compressing a tree
US7461209B2 (en) * 2005-12-06 2008-12-02 International Business Machines Corporation Transient cache storage with discard function for disposable data
US7929646B2 (en) * 2006-01-27 2011-04-19 Qualcomm Incorporated Map decoder with bidirectional sliding window architecture
US7822941B2 (en) 2006-06-05 2010-10-26 Oracle America, Inc. Function-based virtual-to-physical address translation
US8484651B2 (en) 2007-05-04 2013-07-09 Avaya Inc. Distributed priority queue that maintains item locality
KR100922389B1 (ko) 2007-07-04 2009-10-19 삼성전자주식회사 플래시 메모리를 위한 색인 스킴
KR101447188B1 (ko) * 2007-07-31 2014-10-08 삼성전자주식회사 플래시 메모리에 최적화된 입출력 제어 방법 및 장치
US8095724B2 (en) 2008-02-05 2012-01-10 Skymedi Corporation Method of wear leveling for non-volatile memory and apparatus using via shifting windows
TWI499906B (zh) * 2008-12-08 2015-09-11 Apacer Technology Inc Memory reorganization method of storage device, computer storage medium, computer program product, reorganization method
KR20100091544A (ko) * 2009-02-10 2010-08-19 삼성전자주식회사 메모리 시스템 및 그 마모도 관리 방법
US8516219B2 (en) * 2009-07-24 2013-08-20 Apple Inc. Index cache tree
US8468293B2 (en) 2009-07-24 2013-06-18 Apple Inc. Restore index page
US8688894B2 (en) 2009-09-03 2014-04-01 Pioneer Chip Technology Ltd. Page based management of flash storage

Also Published As

Publication number Publication date
US20130073787A1 (en) 2013-03-21
TW201324149A (zh) 2013-06-16
KR101428189B1 (ko) 2014-08-07
TWI608351B (zh) 2017-12-11
CN102999429A (zh) 2013-03-27
WO2013040538A1 (en) 2013-03-21
KR20130030243A (ko) 2013-03-26
EP2570914A3 (en) 2014-07-16
CN102999429B (zh) 2016-07-06
US8924632B2 (en) 2014-12-30
KR20130030238A (ko) 2013-03-26
TW201329715A (zh) 2013-07-16
TWI567553B (zh) 2017-01-21
JP2013065310A (ja) 2013-04-11
KR101865959B1 (ko) 2018-06-08
EP2570914A2 (en) 2013-03-20

Similar Documents

Publication Publication Date Title
JP5709814B2 (ja) 不揮発性メモリを有するシステムのための高速ツリー平坦化
US9477596B2 (en) LBA bitmap usage
US10915475B2 (en) Methods and apparatus for variable size logical page management based on hot and cold data
KR101390134B1 (ko) 비휘발성 메모리를 갖는 시스템을 위한 동적 및 정적 데이터의 처리
US9235502B2 (en) Systems and methods for configuring non-volatile memory
EP2530612B1 (en) Mount-time unmapping of unused logical addresses in non-volatile memory systems
US9367451B2 (en) Storage device management device and method for managing storage device
US20190018788A1 (en) Memory system and method for controlling nonvolatile memory
CN106662985A (zh) 主机管理的非易失性存储器
US20210026763A1 (en) Storage device for improving journal replay, operating method thereof, and electronic device including the storage device
CN106557428A (zh) 数据存储设备的映射系统选择

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140120

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140421

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140424

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140618

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150303

R150 Certificate of patent or registration of utility model

Ref document number: 5709814

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees