JP5696118B2 - 不揮発性メモリシステムのためのウィーブシーケンスカウンタ - Google Patents

不揮発性メモリシステムのためのウィーブシーケンスカウンタ Download PDF

Info

Publication number
JP5696118B2
JP5696118B2 JP2012221681A JP2012221681A JP5696118B2 JP 5696118 B2 JP5696118 B2 JP 5696118B2 JP 2012221681 A JP2012221681 A JP 2012221681A JP 2012221681 A JP2012221681 A JP 2012221681A JP 5696118 B2 JP5696118 B2 JP 5696118B2
Authority
JP
Japan
Prior art keywords
page
nvm
value
wsc
data
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
JP2012221681A
Other languages
English (en)
Other versions
JP2013065309A (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 JP2013065309A publication Critical patent/JP2013065309A/ja
Application granted granted Critical
Publication of JP5696118B2 publication Critical patent/JP5696118B2/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
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7202Allocation control and policies
    • 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/7207Details relating to flash memory management management of metadata or control 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/7211Wear leveling

Description

本発明は、不揮発性メモリシステムのためのウィーブシーケンスカウンタに関する。
NANDフラッシュメモリ、及び他の形式の不揮発性メモリ(NVM)は、大量記憶のために一般的に使用されている。例えば、ポータブルメディアプレーヤのような消費者向け電子装置は、多くの場合、音楽、ビデオ及び他のメディアを記憶するためにフラッシュメモリを備えている。
NVMは、複数のスーパーブロックを含み、各スーパーブロックは、複数のブロックへと編成される。同様に、NVMの各ブロックは、複数のページへと編成される。NVMのコンテンツに関するある情報又は統計値は、ブロックレベル「粒度」で与えられる。換言すれば、そのような情報は、ブロック全体に関して得られるだけであり、そのブロック内の個々のページに関する特定の情報を与えることはできない。
このブロックレベル粒度は、データコヒレンス性を維持するようにブロック内でデータを織るNVMシステムの能力を制限する。データコヒレンス性がないと、ロールバック、ウェアレベリング、ガーベージコレクションのような幾つかのNVM動作を実行できないことがある。従って、コヒレントな仕方でブロック内のデータを織る能力が要望される。
不揮発性メモリ(NVM)システムのためのウィーブシーケンスカウンタ(WSC)を形成するシステム及び方法が開示される。このWSCは、NVMの各ページをプログラムするシーケンスを識別することができる。「ウィーブ(weave)」とは、2つ以上のブロックを、同時にプログラムするためにオープンにし、従って、これらのブロックのページを「織る」ようにプログラムするのを許すことを指す。WSCは、例えば、ロールバック動作を遂行する上で、及び論理的−物理的テーブルマッピングを再構築する上で、NVMシステムの助けとなる。
ホストウィーブシーケンスカウンタ(HWSC)を形成するシステム及び方法も開示される。NVMのページに対してデータが最初にプログラムされるたびに(例えば、ウェアレベリングの目的、等のために移動又は再書き込みされるのではなく)、そのページにHWSCを指定することができる。データが新たなページへ移動されるたびに更新されるWSCとは異なり、データの特定セットに指定されるHWSCは、変化することがない。従って、データがウェアレベリング、ガーベージコレクション、等のために新たなページへ移動されても、そのデータに関連したHWSCは、同じままである。HWSCは、例えば、ページのスタティック対ダイナミック状態を決定する上で、及びウェアレベリングやガーベージコレクション動作を遂行する上で、NVMシステムの助けとなる。
本発明の前記及び他の態様及び効果は、全体にわたって同じ部分が同じ参照文字で示された添付図面を参照してなされた以下の詳細な説明を考慮したときに明らかとなろう。
本発明の種々の実施形態により構成された電子装置のブロック図である。 本発明の種々の実施形態により構成された電子装置のブロック図である。 本発明の種々の実施形態により織られるNVMのブロックの機能図である。 本発明の種々の実施形態によるロールバック動作中のNVMのブロックの機能図である。 本発明の種々の実施形態によるウィーブシーケンスカウンタを使用するロールバック動作のフローチャートである。 本発明の種々の実施形態によるNVMのページのスタティック対ダイナミック決定のフローチャートである。 本発明の種々の実施形態によるウェアレベリングの機能図である。 本発明の種々の実施形態によるウェアレベリング手順を示すフローチャートである。
不揮発性メモリ(NVM)システムのためのウィーブシーケンスカウンタ(WSC)を提供するシステム及び方法が開示される。このWSCは、NVMの各ページをプログラムするシーケンスを識別することができる。「ウィーブ(weave)」とは、2つ以上のブロックを、同時にプログラムするためにオープンにし、従って、これらのブロックのページを「織る」ようにプログラムするのを許すことを指す。
非正常シャットダウン又は他のシステム再ブート事象の場合には、NVMシステムは、NVMの1つ以上の論理的−物理的マッピングテーブルを再構築する必要がある。更に、このマッピングテーブルは、有効な(例えば、非破損)データのみを含む。再構築プロセス中に、無効データを伴う破損ページを見つけると、NVMシステムは、NVMのブロックのページにおいてWSC値を検査して、その破損ページの特定のWSC値を決定する。次いで、NVMシステムは、WSC値が破損ページのWSC値より大きいページは採用できないことを決定する。というのは、予想を記すファイルシステム及びデータベースに対してインコヒレントとなるからである。次いで、NVMシステムは、そのような無効ページを無視し、そしてWSC値が破損ページのWSC値より小さいページのみを使用して論理的−物理的マッピングテーブルを構築することにより、システムを安全状態へ「ロールバック」する。
論理的−物理的マッピングテーブルが再構築されると、時間順のコヒレンス性が維持される。あるケースでは、マッピングテーブルは、WSC値の上昇順にページを順次に検査することにより再構築することができる。2つのページが、各々、同じ論理的アドレスへマップすることを指示する場合には、より高いWSC値を含むページにプライオリティが与えられ、そして他方のページを無効化する。換言すれば、より高いWSC値を伴うページは、その後の時点にその論理的アドレスへプログラムされるので、このページは、正しい論理的−物理的マッピングを含み、従って、マッピングテーブルに使用されるべきであると決定される。同様に、より小さなWSC値を含むページは、誤った、古い論理的−物理的マッピングを含むことがあり、従って、マッピングテーブルの構築に使用されてはならないと決定される。
ホストウィーブシーケンスカウンタ(HWSC)を提供するシステム及び方法も開示される。NVMのページに対してデータが最初に書き込まれるたびに(例えば、ウェアレベリングの目的、等のために移動又は再書き込みされるのではなく)、そのページにHWSCを指定することができる。HWSCは、現在WSCと同じ値としてセットすることができる。古いデータが新たなページへ移動されるたびに更新されるWSCとは異なり、特定のデータセットに指定されるHWSCは、変化しない。例示的シナリオとして、論理的ブロックアドレス(LBA)Xに関連した新たなデータは、ページAに記憶されると仮定する。現在WSCは、23であり、従って、ページAには、WSC=23及びHWSC=23が指定される。現在WSC値が今や82であるときのその後の時点で、LBA Xに関連したデータがページBへ移動される(例えば、ウェアレベリング、ガーベージコレクション、等のためにデータが移動される)。ページBは、新たにWSC=82が指定され、そして古いHWSC=23を維持する。
ある実施形態では、HWSCは、ページのスタティック対ダイナミック状態を決定する上でNVMシステムの助けとなる。特に、HWSCは、ページ内に記憶されたデータがどれほど年をとったかの一般的な考え方を与える。データが古くなると、そのようなデータは、最初にプログラムされて以来移動していないので、スタティックと考えられる見込みが高くなる。従って、データの一般的な年齢は、現在のWSC値と、そのデータを記憶するページに関連したHWSC値との間の差を計算することにより、決定される。この差がスレッシュホールド値より大きい場合には、そのページに記憶されたデータは、プログラムされるべきデータに対してどのブロック又はスーパーブロックを選択するかに関してスタティックと考えられる。その差がスレッシュホールド値より小さい場合には、ページ内に記憶されるデータは、例えば、プログラムされるべきデータに対してどのブロック又はスーパーブロックを選択するかに関してダイナミックと考えられる。
ある実施形態において、HWSCにより与えられるスタティック対ダイナミックの決定は、ウェアレベリングやガーベージコレクションのような保守動作を遂行する上でNVMシステムの助けとなる。NVMの寿命を延長するには、NVMの全てのブロックが同様に消耗するようにさせることが好ましい。スタティックなページは、一般的に、頻繁に書き込み及び再書き込みされないので、スタティックと決定されたページは、高サイクルブロック(例えば、既に比較的多数回消去及びプログラムされたブロック)に一緒に記憶することができる。これは、ブロックが将来消去及び再プログラムされる確率を減少することにより高サイクルブロックにおける更なる消耗を減少する上で助けとなる。同様に、ダイナミックと決定されたページは、低サイクルブロック(例えば、比較的少数回しか消去及びプログラムされないブロック)に一緒に記憶することができる。
図1は、電子装置100のブロック図である。ある実施形態において、電子装置100は、ポータブルメディアプレーヤ、セルラー電話、ポケットサイズのパーソナルコンピュータ、パーソナルデジタルアシスタント(PDA)、デスクトップコンピュータ、ラップトップコンピュータ、及び他の適当な形式の電子装置であり、又はそれを含むことができる。
電子装置100は、システムオンチップ(SoC)110及び不揮発性メモリ(NVM)120を備えている。不揮発性メモリ120は、フローティングゲート又はチャージトラップ技術に基づくNANDフラッシュメモリ、NORフラッシュメモリ、消去可能なプログラマブルリードオンリメモリ(EPROM)、電気的に消去可能なプログラマブルリードオンリメモリ(EEPROM)、強誘電性RAM(FRAM(登録商標))、磁気抵抗性RAM(MRAM)、又はその組み合わせを含む。
NVM120は、消去可能な最小単位である「ブロック」へと編成され、更に、プログラム又は読み取りできる最小単位である「ページ」へと編成される。ある実施形態では、NVM120は、複数のブロックを各々有する複数の集積回路を含むことができる。対応する集積回路からのメモリ位置(例えば、ブロック、又はブロックのページ)は、「スーパーブロック」を形成する。NVM120の各メモリ位置(例えば、ページ又はブロック)は、物理的アドレス(例えば、物理的ページアドレス又は物理的ブロックアドレス)を使用して参照することができる。NVM120の各ページには、ECCデータのようなメタデータ(例えば、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の一部分として実施されるプロセッサのためのメインメモリとして働く。
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のパワーアップ時又は再ブート時に適切なマッピングを依然決定することができる。
論理的−物理的アドレスマッピングに加えて、変換層は、フラッシュ変換層の典型である他の機能、例えば、ガーベージコレクション及びウェアレベリングを遂行することができる。例えば、変換層214は、ウェアレベリングを遂行して、NVM220の全てのブロックに同様の消耗を生じさせるようにする。
上述したように、NVM220のブロックは、一般的に、一度にブロック全体を消去できるが、各ブロックの個々のページは、一度に1ページをプログラムすることができる。NVM220のページは、例えば、新たなデータがNVM220に最初にセーブされるとき(例えば、新たな曲ファイルがポータブルメディアプレーヤ装置に最初にセーブされるとき)、或いは古いデータが異なるページへ移動されるとき(例えば、以前にセーブされたデータがウェアレベリング、ガーベージコレクション又は他の保守操作のために移動されるとき)データでプログラムされる。従って、ここで使用する「新たなデータ」という語は、最初にNVMに初めてプログラムされるデータを指すが、「古いデータ」という語は、NVMに以前にプログラムされそしてNVMの1つのエリアから別のエリアへ移動(例えば、再プログラム)されるデータを指す。データがNVM220のページにセーブされるたびに(例えば、このデータが古いか新しいかに関わらず)、そのページを、順次にインクリメントされるウィーブシーケンスカウンタ(WSC)値に関連付けることができる。
各ページは、その関連WSC値を記憶するメタデータフィールドを含む。別のページがデータでプログラムされるたびに、WSCをインクリメントし、そして新たにインクリメントされたWSC値をそのページのメタデータに記憶することができる。このように、WSCは、NVM220の各ページがプログラムされた相対的な順序を識別するカウンタ数を表わす。例示として、現在WSC値が2に等しいときにページAがデータでプログラムされると仮定する。従って、WSC=2がページAのメタデータに記憶され、そして現在WSC値が3にインクリメントされる。次に、ページBがデータでプログラムされ、従って、WDC=3がページBのメタデータに記憶される。WSCの記憶及び/又はコントロールは、NVMシステムの適当なコンポーネント、例えば、NVMインターフェイス(例えば、図1のNVMインターフェイス118)又は適当なコントロール回路(例えば、図1のSoCコントロール回路112)により遂行される。
ウィーブシーケンスカウンタの「ウィーブ(weave)」とは、NVM220の2つ以上のブロックを、同時にプログラムするためにオープンにし、従って、これらのブロックのページを「織る」ようにプログラムするのを許すことを指す。例えば、図3は、2つのブロックが、同時にプログラミングするためにオープンであるNVMシステム300の機能図である。図3に示すように、ブロック0のページ0及び1が最初にプログラムされ、従って、WSC=0及びWSC=1が各々指定される。ブロック1のページ0が次にプログラムされ、従って、WSC=2が指定される。次いで、ブロック0のページ2がプログラムされ、従って、WSC=3が指定され、等々となる。従って、図3に示すように、ブロック0及び1のページは、織られるようにプログラムされ、WSC値は、これらのページがプログラムされるところの順序を指示する。図3は、2つのブロックが、同時にプログラミングするためにオープンであるケースを示しているが、当業者であれば、2つ以上の任意の数のブロックを、同時プログラミングのためにオープンとし且つこのように織ることができることが明らかであろう。
ある実施形態では、WSCは、ある数の書き込みサイクルの後にロールオーバーする。例えば、WSCは、100,000,000の書き込みサイクルの後にWSC=0にリセットされる。ロールオーバーが生じると、種々のアルゴリズムは、大きなギャップを検出し、そして小さな値のカウンタが、NVMに存在する大きなカウンタ値より実際に大きくなることを推定する。ある実施形態では、WSCカウンタは、NVMの定格寿命中にロールオーバーしないように充分に大きなサイズにセットされる。更に、WSCは、書き込まれているデータに関して公平である。例えば、WSCは、そのページが新たなデータと共に書き込まれるか又は古いデータと共に書き込まれるかに関わらず、その現在値をインクリメントして、現在プログラムされているページのメタデータに指定し続ける。
ある実施形態において、WSCは、種々のNVM動作を遂行する上で助けとなる。例えば、WSCは、NVMシステムのロールバック中に使用することができる。NVMの非正常シャットダウンの後に、NVMシステム(例えば、図1のNVMインターフェイス118又は図2のNVMインターフェイス218のようなNVMシステムの1つ以上のコンポーネント)は、ファイルシステム(例えば、図2のファイルシステム210)により使用される論理的アドレスとNVM(例えば、図2のNVM220)の物理的アドレスとの間の論理的−物理的マッピングテーブルを再構築するように試みる。しかしながら、非正常シャットダウンは、データの種々のページが無効となるようにする。一般的に、1つのページが無効となると、その後にプログラムされるページも無効になると仮定する。というのは、予想を記すファイルシステム及びデータベースに対してインコヒレントとなるからである。NVMシステムは、好ましくは、そのような破損が生じる前に存在する有効データのみを使用して論理的−物理的マッピングテーブルを再構築する。換言すれば、NVMシステムは、まだデータにエラーがなかった適当な時点へシステムを「ロールバック」しなければならない。
WSCは、NVMシステムをどのように適当にロールバックするか決定する上で助けとなる。特に、プログラムされるページのウィーブ特性のために、単一のブロックを破損ページへ単にシリアルにロールバックするだけでは不充分である。むしろ、システムをエラーなし状態へ適切に戻すために、幾つかのブロックを同時にロールバックする必要がある。WSCは、これらの織られたブロックの各々をどのようにロールバックするか決定する上で助けとなる。例えば、図4は、ページが非正常シャットダウンから破損状態となるNVMシステム400の機能図である。図4は、NVMシステム400の2つのブロックしか示していないが、当業者であれば、2つ以上の適当な数のブロックを含むようにこれを外挿できることが明らかであろう。
図4のWSC値により指示されたように、ブロック0及び1のページは、織られるようにプログラムされている。しかしながら、NVMシステム400の非正常シャットダウンのために、ブロック0のページ3が破損し、今や、無効又は修正不能となる(例えば、記号“X”で示されたように)。NVMシステム400(例えば、図1のNVMインターフェイス118又は図2のNVMインターフェイス218のようなNVMシステム400の1つ以上のコンポーネント)は、例えば、NVMシステム400の論理的−物理的マッピングテーブルの再構築中にブロック0を検査するときにそのような破損ページを発見する。ブロック0内で、ページ0−2は、ページ3の前に配置され、従って、NVMシステム400は、ページ0−2におそらくエラーがないと決定する(例えば、破損が生じる前にそれらが配置されているので)。同様に、NVMシステム400は、ブロック0のページ4がおそらく破損したと決定する。というのは、それが破損ページ3の後に配置されているからである(例えば、破損ページの後にプログラムされたページも一般的に破損されるからである)。しかしながら、他のブロック(例えば、ブロック1)のどのページがエラーなしであり、そしてどのページが破損したか決定するため、NVMシステム400は、NVMページのWSC値を検査することに依存する。
例えば、NVMシステム400は、ブロック0内のページ(例えば、破損ページ3の前に配置されているためにおそらくコヒレントであるページ0−2)のメタデータを検査して、それらがWSC=1、2及び5に関連していることを決定する。NVMシステム400は、次いで、ブロック1内のページのメタデータを検査して、ページ0−2がWSC=3、4及び6に関連していることを決定する。これらのページは、全て、WSC値にギャップを伴わずに生じる(例えば、WSC値は、シーケンスにギャップを伴わずに0から6まで進む)ので、NVMシステム400は、これら全てのページがおそらくコヒレントであることを決定する。しかしながら、ウィーブシーケンスカウンタにおいて検出できる次の値は、ブロック0のページ8に関連したWSC=8である。WSC=7は、検出されず、従って、ウィーブシーケンスカウンタにギャップを生じるので、NVMシステム400は、WSC=7が、ブロック0の破損ページ3に関連したWSC値であることを決定する。次いで、NVMシステム400は、7より大きなWSC値に関連したNVMのページがおそらく破損されたことを決定する。換言すれば、(WSC=8に関連した)ブロック0のページ4及び(WSC=9及び10に関連した)ブロック1のページ3−4は、おそらく破損されている。
このように、ウィーブシーケンスカウンタにおいてギャップを見つけることにより、NVMシステムは、非正常シャットダウンからの破損がおそらく開始されている破損ページを識別することができる。次いで、NVMシステムは、破損ページのWSC値より大きなWSC値に関連したページを無視することによりシステムをロールバックする。例えば、これらのページは、NVMシステムの論理的−物理的マッピングテーブルの再構築中に無視される。図5は、このようにNVMシステムをロールバックするプロセス500を示す。このプロセス500は、NVMシステムの適当なコンポーネント、例えば、NVMインターフェイス(例えば、図1のNVMインターフェイス118)又は適当なコントロール回路(例えば、図1のSoCコントロール回路112)によって遂行される。
プロセス500は、ステップ502でスタートする。ステップ504において、NVMシステムは、NVMのページを検査することができる。ステップ506において、NVMシステムは、次いで、ステップ504で検査されたページが有効であるか否か決定する。ページが有効である(例えば、ページがエラーなしである)のに応答して、プロセス500は、ステップ508においてNVMの次のページへ進む。NVMの特定のレイアウトに基づき、前記次のページは、例えば、同じブロック内のページ又は異なるブロック内のページである。次いで、プロセス500は、ステップ504、506、及び508を通してループし、破損ページが識別されるまでNVMシステムのページをチェックする。
ステップ506において無効ページが発見されると、プロセス500は、ステップ510へ進む。次いで、NVMシステムは、NVM内のページのメタデータを読み取り、WSCシーケンス内のギャップを決定する。従って、このWSCギャップ値は、ステップ506で識別された無効ページのWSC値に対応する。次いで、ステップ508において、プロセス500は、このWSCギャップ値より大きなWSC値に関連したページを無視することによりNVMシステムをロールバックする。例えば、このようなページは、NVMシステムの論理的−物理的マッピングテーブルの再構築中にインコヒレントとみなされ無視される。次いで、プロセス500は、ステップ514で終了となる。
再ブート動作中に論理的−物理的マッピングテーブルが再構築されるときに、時間順のコヒレンス性が維持される。あるケースでは、マッピングテーブルは、WSC値の増加順にページを順次検査することにより再構築される。一般的に、ページは、メタデータ内に記憶されたその関連論理的アドレスを含む。従って、論理的−物理的マッピングテーブルは、そのようなメタデータを検査することにより再構築される。しかしながら、時々、ページは、そのページを誤った論理的アドレスに関連付ける誤った又は古びたメタデータを含むことがある。例示として、LBA Xに関連したデータは、ページAへプログラムされる。その後の時点で、LBA Xに関連した新たなデータは、異なるブロック又はスーパーブロックに配置されたページBへプログラムされる。しかしながら、ページAのメタデータは、この変化した論理的アドレスを反映するように決して更新されず、従って、ページAのメタデータは、古くなり、それが依然としてLBA Xに関連していると誤って指示する。
その結果、2つのページが同じ論理的アドレスに関連する場合には、WSC値が高い方のページが、最も新しいユーザデータ及び正しい論理的アドレスマッピングを伴うページであると仮定される。従って、ページのWSC値を検査することにより、特定のLBAの最も新しいバージョンを回復することができる。
論理的−物理的マッピングテーブルは、NVMの1つ以上のページの応答においてWSCシーケンスをたどることにより時間シーケンス順に再構築される。例示的シナリオとして、WSC=1に関連したページは、それがLBA Xに関連することを指示する。論理的−物理的マッピングテーブルは、この情報を含むように更新される。しかしながら、WSC=12に関連したページに到達すると、NVMシステムが示すように、このページのメタデータは、それがLBA Xに関連することも指示する。NVMシステムは、このページがその後の時点で書き込まれ、従って、より最新の論理的アドレスマッピングを有すると仮定する。従って、WSC=12のページは、以前のページを無効化し、そして論理的−物理的マッピングテーブルは、WSC=12のページがLBA Xに関連していることを指示するように更新される。これは、複数の書き込みストリーム(例えば、ダイナミック及びスタティック書き込みストリーム)を有するシステムに対してコヒレントな時間線を維持する上で特に重要である。
WSC値をメタデータに記憶するのに加えて、ホストウィーブシーケンスカウンタ(HWSC)値もNVMの各ページのメタデータに記憶される。WSC値と同様に、HWSC値も逐次のものである。しかしながら、以下に詳細に説明するように、HWSCは、必ずしもインクリメント的ではない。新たなデータが(ウェアレベリングの目的等で移動又は再プログラミングされるのではなく)最初にNVMのページへプログラムされるたびに、そのページにHWSC値が指定される。古いデータを新たなページへ移動するたびに変化するWSC値とは異なり、特定のデータセットに指定されるHWSC値は、決して変化しない。むしろ、特定のデータセットは、NVM内でのその寿命全体にわたって同じHWSC値を維持することができる。換言すれば、HWSC値は、逐次のものであるから、ファイルが最初にNVMにセーブされたときに関してファイルの一般的な「年齢」を指示することができる。例えば、HWSCは、曲ファイルが最初にポータブルメディアプレーヤへダウンロードされたときを指示することができる。
ページに指定すべき特定のHWSC値は、現在WSC値をページのHWSC値に等しくすることにより決定される。規範的なシナリオとして、新たな曲ファイルAがページXに記憶されると仮定する。現在WSC、従って、ページXには、WSC=23及びHWSC=23が指定される。ウェアレベリングプロセスの後に、WSCは、今度は、50に等しくなる。このとき、別の新たな曲ファイルBがページYに記憶され、従って、ページYにはWSC=50及びHWSC=50が指定される(従って、新たなデータに指定されるHWSC値は、逐次であるが、必ずしもインクリメント的ではない)。その後、現在WSC値が82になった時点で、曲ファイルAに関連したデータがページZへ移動される(例えば、データは、ウェアレベリング、ガーベージコレクション、等のために移動される)。ページZは、新たなWSC=82が指定され、そして古いHWSC=23を維持する。従って、曲ファイルAに関連したデータがNVM内で再プログラミングされても、システムは、依然として、曲ファイルAが曲ファイルBより「古い」と決定する。というのは、HWSC値が低いからである。換言すれば、HWSCは、例えば、ファイル又は他のデータが最初にNVMにプログラムされるときの相対的な「タイムスタンプ」を意味する。
ある実施形態では、HWSCは、ページのスタティック対ダイナミック状態を決定する上でNVMシステムの助けとなる。ここに述べるように、「ダイナミックデータ」という語は、比較的頻繁に更新され、消去され及び再プログラミングされるデータを指す。例示として、ダイナミックデータは、天気予報プログラムに関連したデータを含み、そのようなデータは、現在の天気状態を反映するように頻繁に更新される。他方、ここに使用するように、「スタティックデータ」という語は、比較的長期間、一定のままで、変化しないデータを指す。例示として、スタティックデータは、ポータブルメディアプレーヤ装置に記憶された曲ファイル(例えば、.mp3ファイル)を含む。このようなデータは、一般的に、NVM内でのその寿命全体にわたって不変のままである。同様に、「ダイナミックページ」及び「スタティックページ」という語は、各々、ダイナミックデータ及びスタティックデータを記憶するNVMのページを指す。
特に、上述したように、HWSCは、ページ内に記憶されたデータがどれほど古いかの一般的な考え方を与える。データが古いものであるとき、そのようなデータは、スタティックである見込みが高い(例えば、ダイナミックデータは、一般的に、それが消去されるまでに比較的短い期間しか存在せず、従って、「古い」年齢には到達しないからである)。以下に詳細に述べるように、そのようなスタティック対ダイナミックの決定は、ウェアレベリングやガーベージコレクションのような種々のNVMシステム動作を遂行するのに有用である。
ページに記憶されたデータの一般的な年齢を決定するために、そのページの現在WSC値とHWSC値との間の差を計算することができる。この差が所定のスレッシュホールド値より大きい場合には、そのページに記憶されたデータは、スタティックとみなすことができる。その差がスレッシュホールド値未満である場合には、そのデータの状態は、例えば、ダイナミックデータ、最近記憶された新たなデータ、又は未知(例えば、それがダイナミックデータであるか又は単に最近記憶された新たなスタティックデータであるか分からないので)と考えられる。
HWSC値を使用するのに加えて又はそれに代わって、種々の他の技術を使用して、データのスタティック対ダイナミック状態を決定することができる。例えば、特定のデータセットの「ファイルサイズ」を検査することができる。あるケースでは、これは、特定のファイルを記憶するのに、どれほど多くのページが使用されるか決定することを含む。ファイルサイズが大きいほど、ファイルがスタティックである見込みが高い。例えば、NVMシステムは、10ページより大きな(例えば、他の所定のファイルサイズより大きな)サイズを有するファイルは、スタティックであると決定する。別の例として、NVMシステムは、ファイルをNVMへプログラムするのに、どれほど多くの時間が使用されたか決定する。ファイルをプログラムするのに使用された時間の量が大きいほど、そのようなファイルがスタティックである見込みが高い(例えば、大きなファイルは、プログラムするのに多くの時間量を要するからである)。更に別の例として、種々のシステム発見的情報を監視して、ファイルのプログラミング中のNVMシステムの振舞いを決定することができる。このケースでは、NVMシステムが比較的多量の時間及び労力を費やしてファイルをプログラミングするときに、そのようなファイルがスタティックである見込みが高くなる(例えば、大きなファイルは、プログラミングするのに多量の時間及び労力を要するからである)。
図6は、NVMシステムのページのスタティック対ダイナミック状態を決定するためのプロセス600を示す。このプロセスは、ステップ602でスタートする。ステップ604において、スレッシュホールド値を決定する。例えば、スレッシュホールド値は、NVMシステム内に以前に記憶された所定値である。ステップ606において、当該ページに関連したHWSC値を決定する。例えば、HWSC値は、当該ページのメタデータから読み取ることができる。ステップ608において、WSCの現在値を決定する。次いで、ステップ610において、HWSC値と現在WSC値との間の差を計算する。
ステップ612において、その差を、ステップ604で決定されたスレッシュホールド値と比較する。差がスレッシュホールド値より大きいのに応答して、プロセス600は、ステップ614へ進み、当該ページをスタティックページとして識別する。換言すれば、当該ページの「年齢」が充分古いので、おそらく、このページは、スタティックページであると考えられる。
しかしながら、ステップ612において、差がスレッシュホールド以下であるのに応答して、プロセス600は、ステップ616へ進む。ステップ616では、幾つかの結論の1つが得られる。例えば、当該ページが比較的若年であることから、プロセス600は、このページがダイナミックページであると決定する。別の例として、プロセス600は、当該ページが、最近記憶された新たなデータ(例えば、ダイナミックデータであってもなくてもよい)を単に含むかどうか決定する。更に別の例として、プロセス600は、このページの状態が「未知」であると考える。換言すれば、当該ページがダイナミックページであるか、単に最近記憶されたスタティックページであるか分からない。
ある実施形態では、ステップ614又はステップ616へ進むのではなく、プロセス600は、ステップ612において差をスレッシュホールドと比較した後、任意のステップ618、620、622及び624へ進む。このケースでは、HWSCの検査のみに基づいてスタティック対ダイナミックの決定を行うのではなく、プロセス600は、ステップ618、620、622及び/又は624における計算の1つ以上を一緒に使用して、スタティック対ダイナミックの決定を行う。
例えば、ステップ618において、当該ページに関連した全ファイルのサイズを決定する。あるケースでは、このステップは、全ファイルを記憶するのに使用されるページの数を識別することを含む。上述したように、大きなファイルサイズは、ファイルがスタティックであることを指示する。別の例として、ステップ620において、当該ページに関連した全ファイルを書き込むのに要求される時間を決定する。ステップ618と同様に、長い書き込み時間は、ファイルがスタティックであることを指示する。更に別の例として、ステップ622において、全ファイルに関連した種々のシステム発見的情報(例えば、全ファイルを書き込むのに使用される時間及び労力)を識別する。ステップ624において、スタティック対ダイナミックの決定を、ステップ612、618、620、及び622の1つ以上で決定された情報に基づいて行う。
ある実施形態において、図6のプロセス600で示すようなスタティック対ダイナミックの決定は、ウェアレベリングやガーベージコレクションのような保守動作を遂行する上でNVMシステムの助けとなる。ウェアレベリング中に、ユーザデータは、NVMの全てのブロックの均一な消耗を試み維持するためにNVMにおいて移動される。例えば、スタティックデータは、高サイクルブロック(例えば、既に比較的多数回消去及びプログラムされたブロック)へ移動され、そしてダイナミックデータは、低サイクルブロック(例えば、比較的少数回しか消去及びプログラムされないブロック)へ移動される。典型的に、ウェアレベリングは、ある間隔で遂行され、例えば、NVMシステムがビジーでなく、従って、ウェアレベリング動作の付加的な処理要求により否定的に影響されないときに遂行される。システムは、ガーベージコレクションプロセスを使用して、プログラムされたブロックからの有効データを1つ以上の消去されたブロックへ移動することによりメモリを解放する。典型的に、ガーベージコレクションプロセスは、使用可能なメモリが少ないとき、又はメモリスペースを解放する必要が他にあるとき、トリガーされる。
HWSC値を使用して、ページごとのベースでスタティック対ダイナミック状態を決定できるので、HWSCは、保守動作(ウェアレベリングやガーベージコレクションのような)によりページごとのベースでデータを検査及び分離できるようにもする。これは、ブロックごと又はスーパーブロックごとのベースでしかデータを分離又は検査しない他のシステムに勝る利益をもたらす。例示として、図7は、データが、ウェアレベリング動作(又は、例えば、ガーベージコレクション又は他の適当な動作)に対してページごとのベースで分離される規範的なNVMシステム700を示す。
図7に示すように、NVMシステム700は、ページ0−5を有するブロック710を備えている。又、NVMシステム700は、少なくとも1つの高サイクルブロック720及び少なくとも1つの低サイクルブロック730も備えている。例えば、高サイクルブロック720は、比較的多数の書き込み/消去サイクルを以前に受けたブロックであり、一方、低サイクルブロック730は、比較的少数の書き込み/消去サイクルしか受けていないブロックである。
適当なスタティック対ダイナミック決定プロセス(例えば、図6のプロセス600)に基づいて、ブロック710の各ページは、個別に検査される。スタティックページとして識別されたページは、高サイクルブロック720へ再プログラミングされ、そしてダイナミックページとして識別されたページは、低サイクルブロック730へ再プログラミングされる。例えば、図7は、ページ0、1及び3がスタティックページとして識別され、従って、高サイクルブロック720へ再書き込みされることを示す。同様に、図7は、ページ2、4及び5がダイナミックページとして識別され、従って、低サイクルブロック730へ再書き込みされることを示す。ページごとのベースでデータを分離するこのようなシステムは、単にブロックごとのベースでデータを分離するシステムに勝る精度及び利益の向上を果たすことができる。
図8は、ページごとのベースでデータを分離するためのプロセス800を示す。例えば、プロセス800は、ウェアレベリング動作中、ガーベージコレクション動作中又はNVMシステムの他の適当な動作中にデータを分離するのに使用される。
プロセス800は、ステップ802において開始する。ステップ804において、NVMシステムのページを検査して、そのスタティック対ダイナミック状態を決定する。例えば、ページのHWSC値を検査し、ページに関連したファイルのサイズを検査し、ページに関連したファイルを書き込むのに要する時間量を検査し、ページに関連した適当なシステム発見的情報を検査し、又はそれらを組み合わせることができる。ステップ806において、プロセス800は、ページがスタティックであるかどうかを、ステップ804で得られた情報に基づいて決定する。例えば、HWSC値と現在WSC値との間の差をスレッシュホールド値と比較する。この差がスレッシュホールド値より大きい場合には、ページをスタティックページとして識別する。
ステップ806においてページがスタティックとして識別されるのに応答して、プロセス800は、ステップ808へ進む。ステップ808において、ページを高サイクルブロックへ移動する(例えば、プログラムする)。次いで、プロセス800は、810において、NVMシステムの次のページへ進む。次いで、ステップ804、806、808及び810を連続的にループにして、スタティックページを探索し、それを適当な高サイクルブロックへ移動させる。
ある実施形態では、プロセス800は、ステップ806でページがスタティックとして識別されないのに応答して任意のステップ812へ進む。このケースでは、ページを低サイクルブロックへ移動させる。例えば、任意のステップ812は、ページがダイナミックページとして識別される(又は、例えば、ページがダイナミックページの有望な候補である)シナリオで行われる。任意のステップ812は、例えば、データのスタティック対ダイナミック状態が未知であるケースでは除外される。例示として、これは、HWSCとWSCとの間の差がスレッシュホールドより小さく、且つデータがダイナミックであることを示すか、単に最近記憶された新たなスタティックデータであることを示すか分からないときに、生じる。
図5、6及び8のプロセス500、600及び800は、システムの1つ以上のコンポーネント(例えば、図1の電子装置100又は図2の電子装置200)によって実行されることを理解されたい。例えば、プロセスの少なくとも幾つかのステップは、NVMインターフェイス(例えば、図1のNVMインターフェイス118又はNVMインターフェイス218)によって遂行される。当業者であれば、1つ以上のステップをコントロール回路(例えば、図1のSoCコントロール回路112)によって遂行できることが明らかであろう。
更に、図5、6及び8のプロセス500、600及び800は、単なる例示に過ぎないことを理解されたい。本発明の範囲から逸脱せずに、いずれのステップを除去、変更又は結合することもできるし、又、いずれの付加的なステップを追加することもできる。
本発明の以上に述べた実施形態は、例示のためのものであり、これに限定されるものではない。
100:電子装置
110:システムオンチップ(SoC)
112:SoCコントロール回路
114:メモリ
118:NVMインターフェイス
120:不揮発性メモリ(NVM)
200:電子装置
210:ファイルシステム
212:NVMドライバ
216:NVMバスコントローラ
218:NVMインターフェイス
220:NVM
300:NVMシステム
400:NVMシステム
700:NVMシステム

Claims (18)

  1. 不揮発性メモリ(NVM)のページのプログラミングをウィービングするための方法において、
    電子装置のコントロール回路を使用してウィーブシーケンスカウンタ(WSC)の現在値を識別する段階であって、WSCは、NVMの各ページがプログラムされるシーケンスを識別するものである段階と、
    前記コントロール回路を使用して、NVMの第1ブロックの第1ページをユーザデータの第1セットでプログラミングする段階と、
    前記コントロール回路を使用して、前記第1ページをWSCの現在値に関連付ける段階と、
    前記第1のページのプログラミングに応答して、前記コントロール回路を使用して、WSCを、インクリメントされたWSC値へ逐次にインクリメントする段階と、
    前記コントロール回路を使用して、前記データの第1セットが、NVMに最初に記憶される新たなデータであることを決定する段階と、
    前記決定に応答して、前記コントロール回路を使用して、前記第1ページをホストウィーブシーケンスカウンタ(HWSC)値に関連付ける段階であって、HWSC値は、前記WSCの現在値に等しいものである段階と、
    を備えた方法。
  2. 前記コントロール回路を使用して、NVMの第2ブロックの第2ページをユーザデータの第2セットでプログラミングする段階と、
    前記コントロール回路を使用して、前記第2ページを前記インクリメントされたWSC値に関連付ける段階と、
    を更に備えた請求項1に記載の方法。
  3. 前記関連付ける段階は、WSCの現在値を前記第1ページのメタデータへプログラミングすることを含む、請求項1又は2に記載の方法。
  4. 前記第1ページをHWSC値に関連付ける段階は、HWSC値を前記第1ページのメタデータへプログラミングすることを含む、請求項に記載の方法。
  5. 前記コントロール回路を使用して、前記データの第1セットが前記NVMの異なるページから前記第1ページへ移動される古いデータであることを決定する段階と、
    前記決定に応答して、前記コントロール回路を使用して、前記第1ページをホストウィーブシーケンスカウンタ(HWSC)値に関連付ける段階であって、HWSC値は、前記異なるページのHWSC値に等しいものである段階と、
    を更に備えた請求項1又は2に記載の方法。
  6. 前記WSCを逐次にインクリメントする段階は、前記WSCがNVMの寿命全体にわたってより高い値へとインクリメントし続けるように、ロールオーバーなしに前記WSCの現在値をインクリメントすることを含む、請求項1又は2に記載の方法。
  7. 前記WSCを逐次にインクリメントする段階は、前記WSCの値が所定数の書き込みサイクルの後にゼロへロールオーバーするように、ロールオーバーを伴って前記WSCの現在値をインクリメントすることを含む、請求項1又は2に記載の方法。
  8. 不揮発性メモリ(NVM)システムのウェアレベリングを行う装置において、
    現在ウィーブシーケンスカウンタ(WSC)値を識別する手段であって、WSC値は、NVMのページがプログラムされる順序を指示するものである手段と、
    前記NVMの特定のページに対してホストウィーブシーケンスカウンタ(HWSC)値を識別する手段であって、HWSC値は、前記特定ページのデータが最初にNVM内にセーブされたときを指示するものである手段と、
    前記現在WSC値と前記HWSC値との間の差の値を計算する手段と、
    前記計算された差に少なくとも一部分基づいて、前記特定のページが高サイクルブロックへ移動するのに適したスタティックページであることを決定する手段と、
    を備えた装置。
  9. 前記決定手段は、
    前記計算された差を所定のスレッシュホールド値と比較する手段と、
    前記差が前記スレッシュホールド値より大きいことを決定する手段と、
    前記差が前記スレッシュホールド値より大きいことを決定する前記手段に応答して、前記特定のページをスタティックページとして識別する手段と、
    を含む請求項に記載の装置。
  10. 前記NVMの次のページへ進む手段と、
    現在WSC値を識別する前記手段、HWSCを識別する前記手段、前記計算手段、及び前記決定手段を、次のページに対して繰り返すための手段と、
    を更に備えた請求項又はに記載の装置。
  11. 前記特定ページのデータを前記高サイクルブロックの新たなページへ移動する手段と、 前記特定ページのHWSC値を前記新たなページに関連付ける手段と、
    を更に備えた請求項8又は9に記載の装置。
  12. 前記特定ページのデータを前記高サイクルブロックの新たなページへ移動する手段と、 前記現在WSC値を前記新たなページのWSC値に関連付ける手段と、
    を更に備えた請求項又はに記載の装置。
  13. 特定ページがスタティックページであるかどうか決定するための前記手段は、前記特定ページに関連したファイルのサイズ、前記特定ページに関連したファイルを書き込むのに要する時間量、及び前記特定ページに関連したファイルに関するシステム発見的情報、のうちの少なくとも1つに更に基づく、請求項又はに記載の装置。
  14. 前記スタティックページは、比較的長い期間中不変のままであるデータを含むページである、請求項又はに記載の装置。
  15. 不揮発性メモリ(NVM)にアクセスするメモリインターフェイスにおいて、
    NVMへプログラムされるべき特定のデータセットを識別し、
    ウィーブシーケンスカウンタ(WSC)の現在値を決定し、WSCは、ページがNVM内でプログラムされる順序を指示するものであり、
    前記特定のデータセットをNVMの特定のページへプログラムするように指令し、
    前記WSCの現在値を前記特定のページのメタデータに記憶するように指令し、
    前記NVMのページへデータをプログラムした後、前記WSCの現在値を次の値へ逐次インクリメント
    ホストウィーブシーケンスカウンタ(HWSC)を前記特定のページのメタデータに記憶するように指令し、
    前記特定のデータセットがNVM内に最初にプログラムされた新たなデータであるのに応答して前記HWSCの値を前記WSCの現在値に等しくセットし、
    前記特定のデータセットが異なるページから移動された古いデータであるのに応答して前記HWSCの値を異なるページに関連した以前のHWSC値に等しくセットする、
    ように動作するコントロール回路を備えたメモリインターフェイス。
  16. 前記コントロール回路は、更に、
    前記NVMの各ページのWSC値に続いて時間シーケンス順に前記NVMの各ページを検査することにより前記NVMの論理的−物理的マッピングテーブルを再構築するように動作する、請求項15に記載のメモリインターフェイス。
  17. 前記コントロール回路は、更に、
    インコヒレントなデータを含むNVMの破損ページを識別し、
    前記破損ページに関連したWSC値を決定し、
    前記破損ページに関連したWSC値より大きなWSC値に関連したページを無視する、ことにより、前記NVMにおいてロールバック動作を遂行するように働く、請求項15又は16に記載のメモリインターフェイス。
  18. 前記ページを無視することは、前記NVMの論理的−物理的マッピングテーブルの再構築中にページを無視することを含む、請求項17に記載のメモリインターフェイス。
JP2012221681A 2011-09-16 2012-09-14 不揮発性メモリシステムのためのウィーブシーケンスカウンタ Expired - Fee Related JP5696118B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/234,984 2011-09-16
US13/234,984 US9477590B2 (en) 2011-09-16 2011-09-16 Weave sequence counter for non-volatile memory systems

Publications (2)

Publication Number Publication Date
JP2013065309A JP2013065309A (ja) 2013-04-11
JP5696118B2 true JP5696118B2 (ja) 2015-04-08

Family

ID=47002645

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012221681A Expired - Fee Related JP5696118B2 (ja) 2011-09-16 2012-09-14 不揮発性メモリシステムのためのウィーブシーケンスカウンタ

Country Status (7)

Country Link
US (1) US9477590B2 (ja)
EP (1) EP2570929B1 (ja)
JP (1) JP5696118B2 (ja)
KR (2) KR101494051B1 (ja)
CN (1) CN102999431B (ja)
TW (2) TWI564715B (ja)
WO (1) WO2013040537A1 (ja)

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110035540A1 (en) * 2009-08-10 2011-02-10 Adtron, Inc. Flash blade system architecture and method
US8909851B2 (en) 2011-02-08 2014-12-09 SMART Storage Systems, Inc. Storage control system with change logging mechanism and method of operation thereof
US20120203993A1 (en) * 2011-02-08 2012-08-09 SMART Storage Systems, Inc. Memory system with tiered queuing and method of operation thereof
US8935466B2 (en) 2011-03-28 2015-01-13 SMART Storage Systems, Inc. Data storage system with non-volatile memory and method of operation thereof
US9098399B2 (en) 2011-08-31 2015-08-04 SMART Storage Systems, Inc. Electronic system with storage management mechanism and method of operation thereof
US9021231B2 (en) 2011-09-02 2015-04-28 SMART Storage Systems, Inc. Storage control system with write amplification control mechanism and method of operation thereof
US9021319B2 (en) 2011-09-02 2015-04-28 SMART Storage Systems, Inc. Non-volatile memory management system with load leveling and method of operation thereof
US9063844B2 (en) 2011-09-02 2015-06-23 SMART Storage Systems, Inc. Non-volatile memory management system with time measure mechanism and method of operation thereof
US9239781B2 (en) 2012-02-07 2016-01-19 SMART Storage Systems, Inc. Storage control system with erase block mechanism and method of operation thereof
US9298252B2 (en) 2012-04-17 2016-03-29 SMART Storage Systems, Inc. Storage control system with power down mechanism and method of operation thereof
US8949689B2 (en) 2012-06-11 2015-02-03 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US10210175B2 (en) 2012-09-28 2019-02-19 Oracle International Corporation Techniques for lifecycle state management and in-database archiving
US9671962B2 (en) 2012-11-30 2017-06-06 Sandisk Technologies Llc Storage control system with data management mechanism of parity and method of operation thereof
US9123445B2 (en) 2013-01-22 2015-09-01 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US9214965B2 (en) 2013-02-20 2015-12-15 Sandisk Enterprise Ip Llc Method and system for improving data integrity in non-volatile storage
US9329928B2 (en) 2013-02-20 2016-05-03 Sandisk Enterprise IP LLC. Bandwidth optimization in a non-volatile memory system
US9183137B2 (en) 2013-02-27 2015-11-10 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US9470720B2 (en) 2013-03-08 2016-10-18 Sandisk Technologies Llc Test system with localized heating and method of manufacture thereof
US9043780B2 (en) 2013-03-27 2015-05-26 SMART Storage Systems, Inc. Electronic system with system modification control mechanism and method of operation thereof
US10049037B2 (en) 2013-04-05 2018-08-14 Sandisk Enterprise Ip Llc Data management in a storage system
US9170941B2 (en) 2013-04-05 2015-10-27 Sandisk Enterprises IP LLC Data hardening in a storage system
US9543025B2 (en) 2013-04-11 2017-01-10 Sandisk Technologies Llc Storage control system with power-off time estimation mechanism and method of operation thereof
US10546648B2 (en) 2013-04-12 2020-01-28 Sandisk Technologies Llc Storage control system with data management mechanism and method of operation thereof
US9632926B1 (en) 2013-05-16 2017-04-25 Western Digital Technologies, Inc. Memory unit assignment and selection for internal memory operations in data storage systems
US9313874B2 (en) 2013-06-19 2016-04-12 SMART Storage Systems, Inc. Electronic system with heat extraction and method of manufacture thereof
US9898056B2 (en) 2013-06-19 2018-02-20 Sandisk Technologies Llc Electronic assembly with thermal channel and method of manufacture thereof
US9367353B1 (en) 2013-06-25 2016-06-14 Sandisk Technologies Inc. Storage control system with power throttling mechanism and method of operation thereof
US9244519B1 (en) 2013-06-25 2016-01-26 Smart Storage Systems. Inc. Storage system with data transfer rate adjustment for power throttling
US9146850B2 (en) 2013-08-01 2015-09-29 SMART Storage Systems, Inc. Data storage system with dynamic read threshold mechanism and method of operation thereof
US9361222B2 (en) 2013-08-07 2016-06-07 SMART Storage Systems, Inc. Electronic system with storage drive life estimation mechanism and method of operation thereof
US9431113B2 (en) 2013-08-07 2016-08-30 Sandisk Technologies Llc Data storage system with dynamic erase block grouping mechanism and method of operation thereof
US9448946B2 (en) 2013-08-07 2016-09-20 Sandisk Technologies Llc Data storage system with stale data mechanism and method of operation thereof
US9152555B2 (en) 2013-11-15 2015-10-06 Sandisk Enterprise IP LLC. Data management with modular erase in a data storage system
KR102168169B1 (ko) 2014-01-07 2020-10-20 삼성전자주식회사 비휘발성 메모리 시스템의 메모리 맵핑 방법 및 이를 제공하는 시스템
FR3020712B1 (fr) * 2014-04-30 2017-09-01 Proton World Int Nv Compteur bidirectionnel en memoire flash
KR102287760B1 (ko) 2014-10-29 2021-08-09 삼성전자주식회사 메모리 시스템 및 상기 메모리 시스템의 동작 방법
KR102263046B1 (ko) 2014-10-29 2021-06-09 삼성전자주식회사 메모리 장치, 메모리 시스템, 상기 메모리 장치의 동작 방법 및 상기 메모리 시스템의 동작 방법
KR102252378B1 (ko) 2014-10-29 2021-05-14 삼성전자주식회사 메모리 장치, 메모리 시스템, 상기 메모리 장치의 동작 방법 및 상기 메모리 시스템의 동작 방법
KR102553170B1 (ko) 2016-06-08 2023-07-10 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
KR20180019419A (ko) 2016-08-16 2018-02-26 삼성전자주식회사 메모리 컨트롤러, 메모리 시스템 및 그 동작방법
US10949113B2 (en) * 2018-01-10 2021-03-16 SK Hynix Inc. Retention aware block mapping in flash-based solid state drives
KR102626048B1 (ko) * 2018-03-21 2024-01-18 에스케이하이닉스 주식회사 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작 방법
CN110471788B (zh) * 2018-05-08 2024-03-15 美光科技公司 异步功率损耗影响的数据结构
US11379410B2 (en) 2019-09-13 2022-07-05 Oracle International Corporation Automated information lifecycle management of indexes
US11620234B2 (en) 2020-06-29 2023-04-04 Western Digital Technologies, Inc. Operation-deterministic write operations for data recovery and integrity checks
KR20220072242A (ko) * 2020-11-25 2022-06-02 삼성전자주식회사 비휘발성 메모리 장치의 데이터 기입 방법 및 이를 수행하는 비휘발성 메모리 장치

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07182246A (ja) 1993-11-25 1995-07-21 Sanyo Electric Co Ltd 不揮発性メモリの制御装置及び制御方法
WO1996035169A1 (en) 1995-05-05 1996-11-07 Silicon Graphics, Inc. Page migration in a non-uniform memory access (numa) system
US6000006A (en) * 1997-08-25 1999-12-07 Bit Microsystems, Inc. Unified re-map and cache-index table with dual write-counters for wear-leveling of non-volatile flash RAM mass storage
US6282700B1 (en) 1998-05-21 2001-08-28 Hewlett Packard Company Mechanism for maintaining revisions of objects in flash memory
US7966462B2 (en) 1999-08-04 2011-06-21 Super Talent Electronics, Inc. Multi-channel flash module with plane-interleaved sequential ECC writes and background recycling to restricted-write flash chips
US6763424B2 (en) * 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
US7631138B2 (en) * 2003-12-30 2009-12-08 Sandisk Corporation Adaptive mode switching of flash memory address mapping based on host usage characteristics
US7120051B2 (en) 2004-12-14 2006-10-10 Sandisk Corporation Pipelined programming of non-volatile memories using early data
US7516267B2 (en) 2005-11-03 2009-04-07 Intel Corporation Recovering from a non-volatile memory failure
FR2899716A1 (fr) 2006-04-07 2007-10-12 St Microelectronics Sa Procede de securisation de blocs de donnees dans une memoire programmable electriquement
JP2008033801A (ja) * 2006-07-31 2008-02-14 Victor Co Of Japan Ltd メモリデータ管理装置
US7689762B2 (en) * 2007-05-03 2010-03-30 Atmel Corporation Storage device wear leveling
JP5164506B2 (ja) * 2007-10-02 2013-03-21 三菱電機株式会社 フラッシュメモリ管理装置及びフラッシュメモリ管理方法及びプログラム
US20100318719A1 (en) 2009-06-12 2010-12-16 Micron Technology, Inc. Methods, memory controllers and devices for wear leveling a memory
US8566506B2 (en) 2009-08-07 2013-10-22 Intel Corporation Tracking a lifetime of write operations to a non-volatile memory storage
US8281065B2 (en) 2009-09-01 2012-10-02 Apple Inc. Systems and methods for determining the status of memory locations in a non-volatile memory
US8296496B2 (en) 2009-09-17 2012-10-23 Hewlett-Packard Development Company, L.P. Main memory with non-volatile memory and DRAM

Also Published As

Publication number Publication date
JP2013065309A (ja) 2013-04-11
CN102999431B (zh) 2015-07-15
US20130073788A1 (en) 2013-03-21
CN102999431A (zh) 2013-03-27
TW201329709A (zh) 2013-07-16
KR20130030244A (ko) 2013-03-26
TWI604305B (zh) 2017-11-01
KR101494051B1 (ko) 2015-02-16
EP2570929A2 (en) 2013-03-20
KR20130030241A (ko) 2013-03-26
US9477590B2 (en) 2016-10-25
WO2013040537A1 (en) 2013-03-21
EP2570929A3 (en) 2014-05-14
KR101892302B1 (ko) 2018-08-27
TWI564715B (zh) 2017-01-01
TW201329711A (zh) 2013-07-16
EP2570929B1 (en) 2015-05-27

Similar Documents

Publication Publication Date Title
JP5696118B2 (ja) 不揮発性メモリシステムのためのウィーブシーケンスカウンタ
TWI554877B (zh) 處理用於具有非揮發性記憶體之一系統之不正常關機
TWI448890B (zh) 記憶體系統、用於判定電子器件中之動態資料的方法及用於在非揮發性記憶體中執行記憶體垃圾收集之方法
US9841917B2 (en) Systems and methods for configuring non-volatile memory
US8737148B2 (en) Selective retirement of blocks
US8949512B2 (en) Trim token journaling
US8478796B2 (en) Uncorrectable error handling schemes for non-volatile memories
US8812816B2 (en) Garbage collection schemes for index block
CN108369818B (zh) 一种闪存设备的刷新方法和装置
KR20120044324A (ko) 불휘발성 메모리에 대한 메타데이터 리던던시 스킴

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131226

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140120

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140417

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20140702

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141029

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20141106

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150209

R150 Certificate of patent or registration of utility model

Ref document number: 5696118

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

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