JP2009512022A - フラッシュメモリの管理 - Google Patents
フラッシュメモリの管理 Download PDFInfo
- Publication number
- JP2009512022A JP2009512022A JP2008534724A JP2008534724A JP2009512022A JP 2009512022 A JP2009512022 A JP 2009512022A JP 2008534724 A JP2008534724 A JP 2008534724A JP 2008534724 A JP2008534724 A JP 2008534724A JP 2009512022 A JP2009512022 A JP 2009512022A
- Authority
- JP
- Japan
- Prior art keywords
- block
- memory
- page
- data structure
- management 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/04—Addressing variable-length words or parts of words
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
フラッシュメモリ装置の揮発性メモリ内に存在するメモリ管理データ構造を利用してフラッシュメモリを管理する。メモリ装置に電源を供給する度にメモリ管理データ構造を生成および更新する。フラッシュメモリへの書き込み動作中に、フラッシュメモリ内の特定位置を更新してフラッシュメモリの現在の状態を反映する。電源の遮断時は、電源を再度加えるとメモリ管理データ構造が再生成される。フラッシュメモリをスキャンし、フラッシュメモリの特定位置から取得した情報を利用してメモリ管理データ構造を構築する。不良ブロックデーブルは必要ではない。フラッシュメモリを管理して、比較的良好なランダム書き込み性能を供給し、電源の遮断に対応する。応用例には、(例えば、抜かれることにより)電源の障害が任意の時点で発生しうる汎用目的コンピューティング装置用のフラッシュメモリの使用が含まれる。
Description
本発明の技術分野は一般に電子工学に関し、より詳細にはフラッシュメモリ装置のメモリ管理に関する。
フラッシュメモリは一種のEEPROM(electrically erasable programmable read only memory)である。一度に1バイト消去可能な一般的なEEPROMとは異なり、一般にフラッシュメモリでは一度に1ブロックを消去する。ブロックサイズは様々なフラッシュメモリ装置で異なる。フラッシュメモリの管理はメモリ装置に固有であることがよくある。フラッシュメモリ装置は一般に小型で軽量であり、電源がない場合でも状態を維持し、電力消費量が低い。従って、フラッシュメモリは例えば、モバイル装置、バッテリ式装置、低消費電源が望ましい装置、デジタルカメラ、MP3プレイヤ、および/または小型装置等の装置に対して適切である。
上記装置におけるUSBフラッシュメモリの使用は一般に、比較的大量のデータの連続的な書き込みを含み、比較的少量のデータをランダムに書き込む動作にはあまり効果的ではない。さらに、多くのフラッシュメモリ装置を、アプリケーションの実行中にUSBインタフェースを通して他の装置に抜き差しすることができる。従って、USBフラッシュメモリ装置は読み書き動作の途中に(例えば、抜くことにより)電源を失う恐れがある。この結果、回復不能なエラーが生じうる。
メモリを管理して、体裁よく電源遮断に対応し、相対的に良好なランダム書き込み性能を提供する。メモリ管理データ構造を生成して、フラッシュメモリ装置等のメモリ装置に電源を供給する度にそのメモリ管理データ構造を更新する。例示的実施形態では、メモリ管理データ構造を揮発性メモリ内に形成する。従って、メモリ管理データ構造は、電源を失うと失われ、電源が後に供給される度に再生成される。フラッシュメモリへの書き込み動作中に、フラッシュメモリ内の特定位置を更新してフラッシュメモリの現在の状態を反映する。電源の遮断時は、電源を再度加えるとメモリ管理データ構造が再生成される。フラッシュメモリをスキャンし、フラッシュメモリ内の特定位置から取得した情報を利用してメモリ管理データ構造を構築する。
前述および他の目的、態様および利点は、図面を参照した以下の詳細説明からより良く理解されるであろう。
本明細書では、フラッシュメモリに適用するものとしてメモリ管理について記述する。しかし当然のことながら、本明細書で記述するメモリ管理の適用はそれに限定されない。本明細書で記述するメモリ管理を任意の適切な種類の記憶手段に適用する。その記憶手段とは例えば、NANDフラッシュメモリ、NORフラッシュメモリ、非フラッシュメモリ、ダイナミックメモリ、揮発性メモリ、不揮発性メモリ、半導体メモリ、磁気メモリ、ハードディスクメモリ、フロッピー(登録商標)ディスクメモリ、光学メモリ、等である。
図1は例示的フラッシュメモリ装置12のブロック図である。例示的フラッシュメモリ装置12は揮発性メモリ部14、制御装置部16、および不揮発性メモリ部18を備える。例示的実施形態では、不揮発性メモリ部18はフラッシュメモリを備える。しかしながら、任意の適切なメモリを利用することができる。揮発性メモリ部14が揮発性メモリを備える必要はなく、従って代替的実施形態では揮発性メモリ部14は不揮発性メモリを備える。さらに、例示的実施形態では、揮発性メモリ部14および/または不揮発性メモリ部18はデータベースを備えることができる。フラッシュメモリ装置12を単一のプロセッサ、または複数のプロセッサ内で実装することができる。複数のプロセッサを分散させるか、または中央に配置することができる。複数のプロセッサは、無線、有線またはそれらの組合せで通信することができる。例えば、フラッシュメモリ装置12の制御装置部16を複数の分散プロセッサで実装することができる。
以下でさらに詳細に記述するように、制御装置部16はフラッシュメモリ部18へのアクセスを管理する。本明細書で使用する“アクセス”という用語は、読み取り、書き込み、消去またはそれらの組合せを備える。制御装置部16はさらに、揮発性メモリ部14内部のメモリ管理データ構造を構築する。
フラッシュメモリ装置12を、フラッシュメモリ装置12へのアクセスを望む任意の適切な装置(アクセス装置は図1に示さず)にインタフェース20経由で結合することができる。アクセス装置(例えば、デジタルカメラまたはMP3プレイヤ)をインタフェース20経由でメモリ制御装置部16に結合する。インタフェース20は例えば、USB(Universal Serial Bus)等の任意の適切なインタフェースを備えることができる。例示的実施形態では、制御装置部16はアクセス装置に対して透過的であり、アクセス装置は自身がフラッシュメモリ18に直接接続していると“考える”。別の例示的実施形態では、制御装置16はディスクメモリをエミュレートし、アクセス装置は自身がディスクに直接接続していると“考える”。インタフェース20は無線リンク、有線リンク、またはそれらの組合せであることができる。
図2は、フラッシュメモリ装置の別の例示的実施形態を示すブロック図である。図2に示す構成では、フラッシュメモリ装置は複数の不揮発性メモリ部22を備える。例示的実施形態では、フラッシュメモリ装置は不揮発性メモリ部22の各部(22a−22k)に別々にアクセスする手段を備える。別々の部分22a−22kは単一のチップ、別々のチップ、またはそれらの組合せ上の別々のフラッシュメモリ部を表すことができる。例示的実施形態では、不揮発性メモリ部22の各部へのアクセスを、例えば別々の有効/無効スイッチ等の任意の適切な手段により実装することができる。不揮発性メモリ部22の選択部分へ別々にアクセスすることにより、複数の機能を並行して実施することができる。例えば、不揮発性メモリ部22の選択部分は、他の部分がより長時間を要する動作を実施している間に命令を受理することができる。
図1を再度参照する。便宜上、本明細書では不揮発性メモリ部18もフラッシュメモリと称する。例示的実施形態では、フラッシュメモリ装置12に電源を加えるとき、制御装置16はフラッシュメモリ18をスキャンする。制御装置16はフラッシュメモリ18のスキャンから取得した情報を利用して、揮発性メモリ部14内にメモリ管理データ構造を構築する。制御装置部16は、フラッシュメモリ18のブロックおよびページの状態に関する情報を、フラッシュメモリ18の選択ブロックの選択ページから取得する。
図3はフラッシュメモリ18の図であり、ブロックおよびページに対する例示的データ構造を示す。フラッシュメモリ18は固定数のブロックを備える。各ブロックは固定数のページを備える。図3に示すように、例示的実施形態ではフラッシュメモリ18は“N”プラス1個のブロックを備え、各ブロックは“L”プラス1個のページを備える。各ページは固定数のバイトを備える。例示的実施形態では、フラッシュメモリ装置はフラッシュメモリ部18当り4096個のブロック(4K個のブロック)を備え(即ち、N=4095)、各ブロックは64個のページを備える(即ち、L=63)。従って、各フラッシュメモリ部18は256K個のページを備える(4K×64)。さらに、各ページは2112バイトを備える(データに対して2KBを指定し、メタデータに対して64Bを指定)。しかしながら、様々な他の構成を想定している。
データをフラッシュメモリに書き込むに先立ち、メモリを消去しなければならない。より詳細には、ブロックを書き込み用に使用するに先立ち、ブロックを消去しなければならない。フラッシュメモリは一度に1ページ書き込むことができる。フラッシュメモリは一度に1ブロック消去される。従って、消去動作をブロックベースで実施し、プログラム(書き込み)動作をページベースで実施する。読み取り動作もページベースで実施する。ブロック内のページは低アドレスから高アドレスに連続的に書き込まれる。従って、図3を参照すると、ページ2に書き込む前にページ1に書き込む。ページに書き込むと、ブロック内のそれより前のページには、(そのブロックを)次に消去した後まで書き込むことはできない。以下でさらに詳細に記述するように、連続的書き込み条件を利用して消去の失敗を判定する。消去時に、フラッシュメモリセルにバイナリ値1を与える。プログラム(書き込み)時に、セルにバイナリ値0を与える。
図1および3を参照する。例示的実施形態では、読み取り動作はフラッシュメモリ18からページ全体を読み取ることを含む。ページ内容を制御装置部16のレジスタにコピーする。本例示的実施形態では、レジスタサイズは2112バイト(2KB+64バイト)である。レジスタの内容を、インタフェース20(例えば、USB)経由でアクセス装置に転送することができる。レジスタの内容を全体として転送することができるか、またはその任意の部分を転送することができる。上述のように、書き込み動作を連続的なページ順序で実施する。ページには消去と消去の間に4回まで書き込むことができる。しかしながら、ページの同一部分には消去を行うまで書き込むことができない。即ち、セルには2度書き込むことはできない。例えば、(消去せずに)ゼロを1に変えることはできない。従って、メモリセルを0で書き込むと、消去を行うまでセルを1で書き込むことはできない。書き込み動作を制御装置部16により実施する。フラッシュメモリ18に書き込むべきデータを制御装置16内のレジスタに置き、レジスタの内容をフラッシュメモリ18に転送する。レジスタの内容を4回までの転送でフラッシュメモリ18に転送することができる。従って、消去前にページに4回まで書き込むことができ、消去と消去の間で再書き込みされるページ部分はない。
様々な手段を使用して、フラッシュメモリ18から読み取られているデータが正しい(例えば、破壊されていない)ことを保証することができる。例示的実施形態では、ECCと呼ばれるエラー訂正検出を読み取り動作中に利用する。任意の適切なECCのスキームを使用することができる。例示的実施形態では、ダブルビットエラー検出およびシングルビットエラー訂正のハミング符号を使用する。1ページのデータをフラッシュメモリ18から読み取るとき、制御装置部16によりECCをページ全体に実施する。エラーが検出されない場合、もしくは検出したエラーが訂正される場合、ページは良好であると判定される。エラーが検出されそのエラーを訂正できない場合、ページは不良であると判定される。
フラッシュメモリ18から読み取ったデータが正しいことを保証する別の手段は、強いエラー検出(strong error detection)と呼ばれ、ハッシュ関数を使用するスキームである。ハッシュ関数は、可変長の入力をハッシュ値と呼ばれる固定長の出力に変換する関数である。数学的制限の中で、ハッシュ関数に2つの異なる入力を与えても同一のハッシュ値とはならない。例示的実施形態では、例えば公知のMD5またはSHA−1等の暗号ハッシュ関数を使用する。データをページに書き込むとき、少なくともデータの一部をハッシュ関数により操作する。本操作はデータのハッシュ化と呼ばれる。結果のハッシュ値をデータとともにページに格納する。ハッシュ値をページのメタデータ部に格納する。ハッシュ化を制御装置部16により実施する。データをページから読み取るとき、制御装置16はデータの書き込みに使用したものと同じハッシュ関数を用いてデータをハッシュする。結果のハッシュ値を、ページのメタデータ部に格納したハッシュ値と比較する。2つのハッシュ値が一致する場合、データは良好であると判定される。2つのハッシュ値が異なる場合、データは不良であると判定される。
図4はブロック内の例示的ページ指定の図である。各ブロック内のページをデータまたは要約ページのいずれかとして指定する。本明細書で記述する例示的実施形態では、図4に示すように、各ブロックの最終ページ(ページL)を要約ページとして指定する。全ての他のページ(ページ0からページL−1)をデータページとして指定する。各ブロックのデータページのうち、以下で記述するようにページ0を特別に扱う。全てのデータページは、読み取り、書き込み、および消去等の一般的な使用に対して利用可能である。各ページのページ0はブロック固有の情報を含み、各ブロックのページLは、ブロックとそのブロック内のページとに関連する要約情報を含む。
図5は、ペイロード部24とメタデータ部26とを備えるページの例示的データ構造の図である。図5は、フラッシュメモリ内のページL以外の全ページに対する例示的データ構造を示す。ペイロード部24は4つのサブページを備える。各サブページのサイズは512バイトである。即ち、各サブページは512バイトのデータを収容することができる。ペイロード部24のサイズは2048バイト(2KB)である。メタデータ部26のサイズは64バイトである。メタデータ部26は不良ブロックインジケータ(BBI)部32、ブロックシーケンス番号部36、シール部34、エラー訂正検出部38、および論理ブロックアドレス(LBA)部28を備える。論理ブロックアドレス(LBA)部28はサイズが18ビットであり、ページのLBAを収容することができる。メタデータ部26はさらに、サイズが4ビットの有効サブページ部30を含む。有効サブページ部30は4ビット、即ち有効性ビット1(VB1)、有効性ビット2(VB2)、有効性ビット3(VB3),有効性ビット4(VB4)を収容することができ、各ビットは夫々のサブページが有効か否かを示す。エラー検出訂正部を4つのセグメントに細分する。即ち潜在的なページ書き込み当り1セグメントである(実際には、大部分のページは1度だけしか書き込まれない)。読み取りの際は、最も直近に書き込んだ(例えば、最終の)セグメントのみが該当する。エラー検出符号はページデータおよびメタデータを対象とする。ECCはデータ、メタデータ、およびエラー検出符号を対象とする。図5に示した内容はブロックの全てのページに見られるわけではないことに留意すべきである。例えば、以下で記述するように、一部の内容はブロックのページ0にのみ見られる。
製造後の試験時にブロックが不良である場合、そのブロックのページ0またはページ1を印付けしてそのブロックが不良であることを示す。BBI部32は、ブロックの状態の表示を不良または良好として備える。ページのBBI部32は、ブロックの最初の2ページに関係するに過ぎない。例示的実施形態では、BBI部32がこれら両方のページに対して全ビットバイナリ値1(all binary 1's)である場合、そのブロックは良好である。ブロックが不良である場合、BBI部32は、ページ0またはページ1のいずれかに対して全ビットバイナリ値1(all binary 1's)以外の値を備える。ブロックシーケンス番号部36のサイズは32ビットである。消去後最初にブロックに書き込む度に、(例えば、全てのブロックに渡る)グローバルシーケンス番号を増加させ、その値をブロックシーケンス番号部36に置く。同一のブロックシーケンス番号を書き込むとき、およびその場合は、その同一のブロックシーケンス番号をブロック要約ページのメタデータに書き込む。最初または最終ブロック以外のブロックに対してはブロックシーケンス番号36は無視される。
シール部34はブロックの消去状態の表示を収容する。そのインジケータをシールと称する。シールはブロックのページ0にのみ関係する。シールは、ブロックが完全に消去されているかまたは完全には消去されていないかのいずれかを示すのに使用する特徴的なビットパターンである。消去ブロックが“シールされている”とき、その特徴的なパターンを、ECCまたはエラー検出符号38なしにブロックのページ0のメタデータ部26のシール部34に書き込む。任意の適切な特徴的パターンを使用することができる。ブロックにシール後に最初に書き込むとき、シールを全ビットバイナリ値0(all binary 0s)に設定する。
図6は要約ページに対する例示的データ構造の図である。そのデータ構造は、データページに対して記述したもの(例えば、図5)と等価な全ての論理ブロックアドレス(LBA)部および有効性ビット部40およびメタデータ部26を備える。ブロックの最終ページの直前のページ(ページL−1)に書き込むと、最終ページ(ページL)もブロックに関連する要約情報で書き込まれる。ブロック内の各ページに対するLBAおよびブロック内の各ページに対する有効性ビットを、全てのLBAおよび有効性ビット部40に書き込む。全てのLBAおよび有効性ビット部40のサイズは189ビットであり、従ってブロック内の63個のデータページ各々に対してページ当たり3バイトまで収容する。ブロックシーケンス番号を、メタデータ26のブロックシーケンス番号部36に書き込む。ブロックシーケンス番号を使用して、電源投入中にメモリ管理データ構造を構築する。
フラッシュメモリを、揮発性メモリ内に構築したメモリ管理データ構造に従って管理する。メモリ管理データ構造を、電源を加える度に再生成する。電源の障害中は、電源障害時に進行中の任意の書き込み動作を完了するために十分なエネルギー備蓄が(例えば、電気容量を通して)フラッシュメモリ装置内に存在することを想定している。電源を再度加えるまで、電源障害後に何らかの新規動作が開始されることは期待していない。メモリ管理データ構造を本明細書ではテーブルとして示す。しかしながら、本明細書で示した図および実例は例示的であって、特定の構成および/または実装を暗示するよう意図していないことを強調しておく。
図7は、テーブル、即ちテーブルIとして示した例示的メモリ管理データ構造の図であり、それは論理ブロックアドレス(LBA)をフラッシュページアドレスに関連づける。LBAはテーブルIのアドレス指定に用いる索引であると想定しているが、明快さのためテーブルIの一部として示してある。LBAは、アクセス装置(例えば、USB経由で接続したコンピュータ、デジタルカメラまたはMP3プレイヤ)がメモリにアクセスするために使用するアドレスである。アクセス装置がUSB経由で4KBのセグメントでメモリをアドレス指定することは珍しくはない。しかしながら、フラッシュメモリは2KBのセグメントでアドレス指定可能である。テーブルIで表すメモリ管理データ構造は4Kのアドレス指定可能なLBAを2Kのアドレス指定可能なフラッシュメモリページアドレスにマップする。例示的実施形態では、テーブルIは256K(256×1024)個の行を備える。テーブルIをLBAにより索引付けする。各行はLBAと、対応するフラッシュメモリページアドレスとを備える。各行はさらに、各フラッシュメモリページの夫々512KBのサブページに対する有効性ビット、VB1、VB2、VB3、およびVB4を含む。
別の例示的メモリ管理データ構造をテーブルIIとして図8に示す。テーブルIIはどのブロックがフリーであるかを示す。フリーブロックは、消去され書き込みに利用可能なブロックである。例示的実施形態では、ブロック0はテーブルIIに含まれない。ブロック0は一般に、フラッシュメモリ装置の製造者により完全に良好であることが保証されている。ブロック0は1000回まで正確に書き込みおよび消去できることも一般に保証されている。例示的実施形態では、ブロック0を一般的なデータ読み取りおよび書き込みに使用しない。例示的実施形態では、フリーブロックを、各ブロックに対するフリーブロック列内の単一ビットで示す。
図9は、テーブルIIIとして示した例示的メモリ管理データ構造の図である。テーブルIIIは各ブロック内の有効なページの数を示し、ブロックが廃棄されたかどうかを示す。ブロックが廃棄される場合、所定のビットパターンをテーブルIIIのフリーインジケータ列に格納する。任意の適切なビットパターンを使用して、ブロックが廃棄されたことを示すことができる。ページは、そのページが利用可能な内容(データ)を含む場合に有効であると判定される。例えば、ページの内容(古いページ)を別のページ(新しいページ)に書き込む場合、その古いページを無効と判定する。その新しいページは有効であると判定する。ブロック内の有効なページの数を示す値は、各ブロックが63個のデータページを含むので0から63の間である。例示的実施形態では、新しいブロックが必要なとき、最小数の有効ページを有するブロックを消去の候補として判定する。最小数の有効ページを有するブロックを消去することで、消去時に最も多数のページを回復する。テーブルIIIを使用して、ブロックが消去の候補であるかどうかを判定することもできる。例示的実施形態では、ブロックがなんらかの有効なページを含む場合、そのブロックは消去の候補ではない。幾つかの消去ブロックが留保されることを想定している。留保した消去ブロックを使用して、転送中に、ブロックを圧縮および消去する必要なく長時間の書き込みを処理することができる。また、留保した消去ブロックを使用して、フラッシュメモリ装置がほぼ満杯のときの高速なブロック再利用を回避することができる。留保した消去ブロックを使用して、フラッシュメモリ装置の寿命の間に不良となったブロックを処理することもできる。
図10はテーブルIVとして示した例示的メモリ管理データ構造の図である。テーブルIVはアクティブブロックおよびアクティブページを示す。いかなる時点においても、アクティブブロック内部には、多くとも1つのアクティブブロックと多くとも1つのアクティブページが存在する。アクティブブロックは、現在アクセスされているブロックである。アクティブページはアクティブブロック内部で最初に消去されたページである。アクティブページは、書き込み命令に応じて次に書き込まれるページである。テーブルIVとして示したが、例示的実施形態では、アクティブブロックとアクティブページを、電源投入時のスキャン中に初期化する動的ランタイム変数として実装できることを想定している。
図11はテーブルVとして示した例示的メモリ管理データ構造の図である。テーブルVは各ブロックに対するブロックシーケンス番号を示す。テーブルVを、他のメモリ管理データ構造(例えば、テーブルI−IV)の構築中に使用する。フラッシュメモリ装置の作製時は、書き込んだブロックはない。後のブロック消去各々に対し、論理シーケンス番号を増加させ、新しく書き込んだブロックのページ0のメタデータに書き込まれる。シーケンス番号も同様にそのブロックの要約ページに、そのページが書き込まれる場合またはそのときに書き込まれる。同一のLBAにマップされることを求める2つのページを電源投入時のスキャンにより検出するとき、そのシーケンス番号を使用する。この衝突を、主に最大のシーケンス番号を有するブロック内のページを選択することにより解決する。上記のようなページが複数存在する場合(同一ブロック内であることが必要)、最大のページ番号を有するものを選択する。テーブルVは、スキャン中に発見した全ブロックのブロックシーケンス番号を備える。これにより、所与のLBAに対する任意の以前に発見した候補に対してブロック番号を判定し、上述の比較を行うことができる。例示的実施形態では、テーブルVを初期化後に廃棄する。
図12は、電源投入時にブロックをスキャンする例示的プロセスのフロー図である。各ブロックを、メモリ管理データ構造を構築するプロセスの一部としてスキャンする。電源を加えるとき、フラッシュメモリ装置(例えば、フラッシュメモリ装置12)のフラッシュメモリ(例えば、フラッシュメモリ18))を(例えば制御装置部16により)スキャンして、(例えば、揮発性メモリ部14内の)メモリ管理データ構造を構築するのに必要な情報を取得する。例示的実施形態では、フラッシュメモリのブロックについての情報を取得し、廃棄されていないブロックのページについての情報を取得する。電源を加えると、またはその後の適切な時点で、例示的実施形態ではメモリ管理データ構造の構築プロセスがブロックの要約ページのスキャンにより開始し、次いで、必要に応じてブロック内の他のページをスキャンする。本順序は例であって、ブロックとページをスキャンする任意の適切な順序を使用できることを強調しておく。
電源を加えると、またはその後の適切な時点で、フラッシュメモリのブロックをスキャンしてメモリ管理データ構造を生成/ポピュレートする。各ブロックをスキャンして、ブロックの要約ページが良好であるかどうか(ステップ46)、ブロックがシールされているかどうか(ステップ48)、ブロックに不具合があるかどうか(ステップ50)、およびブロックが消去されているかどうか(ステップ52)を判定する。適切なデータ構造を、これら判定の各々の結果に従って生成/更新する。
プロセスはステップ44でブロック1に進む。ブロック0はスキップする。ブロックの要約ページが良好かどうかをステップ46で判定する。要約ページが良好であると判定すると(ステップ46)、その要約ページをステップ54でスキャンする。例示的実施形態では、要約ページを図13に示す例示的フロー図に従ってスキャンする。要約ページのスキャンは、図13のステップ78で示すようにページ0に対するエントリで開始する。ステップ80で、要約ページ内のエントリを使用してテーブルIをポピュレートする。例示的実施形態では、テーブルIを図15に示す例示的プロセスに従ってポピュレートする。ステップ114で、要約ページ内のLBAエントリに対するエントリがテーブルI内に存在するかどうかを判定する。LBAエントリが存在しないと判定すると(ステップ114)、ステップ120でテーブルIを要約ページ内のLBAエントリで更新する。この更新には、ブロック番号、ページ索引、および有効性ビット情報等の、LBAに関連する全ての情報のマッピングが含まれる。要約ページ内のLBAエントリに対するLBAエントリがテーブルI内に存在すると判定すると(ステップ114)、ステップ116で、関連するフラッシュメモリブロックのブロックシーケンス番号がテーブルVで示したブロックシーケンス番号以下であるかどうかを判定する。そうならば、ステップ120でテーブルIをポピュレートする。そうでなければ、ステップ118に示すように、プロセスは図13のステップ80に進む。
ステップ84で、ブロック内にページがまだ存在するかどうかを判定する。ページがまだ存在する場合、プロセスはステップ82で次のページに進む。プロセスはステップ80に進み、上述のように図15に示した例示的フロー図に従ってテーブルIをポピュレートする。ページがもう存在しないと判定する場合(ステップ84)、ステップ86に示すようにプロセスは図12のステップ54に進む。ステップ68で、スキャンすべきブロックがまだあるかどうかを判定する。スキャンすべきブロックがまだあると判定する場合(ステップ68)、プロセスはステップ66で次のブロックに進む。ステップ46で、ブロックに対する要約ページが良好であるかどうかを判定する。要約ページが良好である場合、プロセスは残存するブロックがなくなるまで、上述のようにステップ54、68、および66を通って進む。
ブロックに対する要約ページが良好でないと判定する場合(ステップ46)、ステップ48で、ブロックがシールされているかどうかを判定する。ページ0のメタデータ部のシール部をチェックして、ブロックがシールされているかどうかを判定する(図5を参照)。シールの特徴的なパターンが検出される場合、ブロックはシールされている。ブロックがシールされている場合、ステップ56でブロックをフリーリストにのせる。例えばテーブルIIおよびテーブルIII(図8および図9を参照)等の、各ブロックのフリー状態を示すメモリ管理データ構造を更新することによりブロックをフリーリストにのせる。ブロックがシールされていない場合(ステップ48)、ステップ50でブロックに不具合があるかどうかを判定する。ページ0および1の不良ブロックインジケータ(BBI)部(図5を参照)をチェックして、ブロックに不具合があるかどうかを判定する。例示的実施形態では、ページ0および1のBBI部が全ビットバイナリ値1(all binary 1's)を含む場合はブロックに不具合はなく、その他の場合は全て、ブロックに不具合がある。ブロックに不具合がある場合(ステップ50)、ブロックを廃棄し、例えばテーブルII(図8を参照)等の利用可能なブロックを示すメモリ管理データ構造をそれに応じて更新する。
ブロックに不具合がないと判定する場合(ステップ50)、ステップ52でそのブロックを消去されているかどうか判定する。ブロックは、そのブロック内の全てのビットが1である場合、消去されていると見なす。ブロックが消去されていると判定する場合(ステップ52)、ステップ60でそのブロックをシールし、ステップ64でそのブロックをフリーリストにのせる。ステップ64で、例えばテーブルIIおよびテーブルIII(図8および図9を参照)等の各ブロックのフリー状態を示すメモリ管理データ構造を更新することで、ブロックをフリーリストにのせる。ブロックが消去されていないと判定する場合(ステップ52)、ステップ62でブロックのページをスキャンする。例示的実施形態では、ブロックを図14に示す例示的フロー図に従ってスキャンする。
ステップ88で、ブロックのスキャンをページ0で開始する。ステップ90で、ページが良好であるかどうかを判定する。ECCおよび強いエラー検出(strong error detection)アルゴリズムの結果エラーがなければ、そのページは良好であると判定する。ページが良好でないと判定する場合(ステップ90)、ステップ96でページが消去されている(即ち、全ビットバイナリ値1(all 1's)を含む)かどうかを判定する。ページが消去されていない場合(ステップ96)、ステップ110でブロックを廃棄し、ステップ112に示すようにプロセスは図12のステップ62に進む。ページが消去されている場合(ステップ96)、ステップ102でアクティブブロックおよびアクティブページインジケータを更新する。例示的実施形態では、アクティブブロックおよびアクティブページインジケータを図16に示す例示的プロセスに従って更新する。ページは、それが最大ブロックシーケンス番号を有するブロック内の最初に消去されたページであり且つそのブロックが廃棄されていない場合、アクティブページとして指定される。アクティブブロックが既に指定されている場合、アクティブページを以下に記述するようにアクティブブロックから選択する。しかしながら、アクティブブロックが存在しないことも有り得る。これは、例えばブロックが満杯になった後だが、次の書き込み要求が到着する前または要約ページに書き込み可能となる前の、電源障害の結果で有り得る。いずれの場合も、最後に割り当てたブロックは完全に満杯であり、アクティブページはない。
ステップ120で、アクティブページがあるかどうかを判定する。アクティブページがない場合(ステップ120)、ステップ126で現ブロックおよびページを将来のアクティブブロックおよびアクティブページとして格納する。アクティブページが存在する場合(ステップ120)、ステップ122で、アクティブページのブロックシーケンス番号が(例えばテーブルVにより判定された)現ブロックのシーケンス番号未満であるかどうかを判定する。そうならば、ステップ126で現ブロックおよびページを将来のアクティブブロックおよびアクティブページとして格納する。そうでなければ、ステップ124で示すように、プロセスは図14のステップ102に進む。ステップ106で、ブロックの最終ページをスキャンしたかどうかを判定する。スキャンすべきページがまだある場合、ステップ104で次のページにアクセスする。プロセスはステップ90に進み、ページが良好でない場合、上述のようにステップ96およびステップ102を通って進む。
ステップ90で、ページが良好であると判定する場合、ステップ92で現ページがページ0であるかどうかを判定する。現ページがページ0である場合、ステップ98でブロックシーケンス番号を適切なメモリ管理データ構造に記録する。例示的実施形態では、ブロックシーケンス番号をテーブルVに記録する。ステップ100で、適切なメモリ管理データ構造を良好なLBAで更新する。例示的実施形態では、上述のようにテーブルIを図16に示す例示的プロセスに従って更新する。ステップ106で、ブロックの最終ページをスキャンしたかどうかを判定する。スキャンすべきページがまだある場合、ステップ104で次のページを取り出し、上述のようにプロセスはステップ90に進む。
現ページがページ0でないと判定する場合(ステップ92)、ステップ94で、前のページが消去されているかどうかを判定する。前のページが消去されていると判定する場合(ステップ94)、ステップ110でブロックを廃棄し、ステップ112で示すようにプロセスは図12のステップ62に進む。前のページが消去されていないと判定する場合(ステップ94)、ステップ100で適切なメモリ管理データ構造を良好なLBAで更新する。例示的実施形態では、上述のようにテーブルIを図15に示す例示的プロセスに従って更新する。ステップ106で、ブロックの最終ページをスキャンしたかどうかを判定する。スキャンすべきページがまだある場合、ステップ104で次のページにアクセスし、上述のようにプロセスはステップ90に進む。
図12を再度参照する。ステップ54、ステップ58、ステップ64またはステップ62の結果として、ステップ68でスキャンすべきブロックがまだあるかどうかを判定する。スキャンすべきブロックがまだある場合、上述のようにプロセスはステップ66に進んで継続する。スキャンすべきブロックがもうないと判定する場合(ステップ68)、廃棄したブロックを除いて現ブロックシーケンス番号を最大ブロックシーケンス番号に設定する。適切なメモリ管理データ構造(例えば、テーブルIIIおよびテーブルV)を更新して、現ブロックのシーケンス番号の設定を反映する。ステップ72で、現アクティブブロックのシーケンス番号が最大ブロックシーケンス番号未満であるかどうかを判定する。そうでなければ、ステップ76で電源投入プロセスが完了する。そうならば、ステップ74でアクティブブロックをゼロにする。即ち、アクティブブロックがないことを示すようにアクティブブロックインジケータを設定する。
例示的実施形態では、消去をフラッシュメモリのブロックに渡って均一に配分するよう試みる。本プロセスはウェアレべリングと呼ばれる。例示的ウェアレべリングプロセスに従って、ブロックが消去された回数を示す数字(消去回数)を各ブロックの要約ページのメタデータ部に書き込む。例示的実施形態では、ブロックがシールされているときに消去回数を要約ページに書き込む。各ブロックに対する消去回数はメモリ管理データ構造内で維持され、電源投入中にメモリ管理データ構造を構築する間に各ブロックの要約ページから回復可能である。
上述のように、メモリ管理の例示的実施形態を様々なコンピューティング装置と関連して記述したが、根底にある概念を、メモリを管理可能な任意のコンピューティング装置またはシステムに適用することができる。
本明細書で記述した様々な技術を、ハードウェアまたはソフトウェア、もしくは必要に応じて両方の組合せと関連して実装することができる。従って、メモリを管理する方法および装置、もしくはその或る態様または部分は、フロッピー(登録商標)ディスケット、CD−ROM、ハードドライブ、または任意の他の機械可読記憶媒体等の有形媒体に具現化したプログラムコード(即ち、命令)の形態を取ることができ、そのプログラムコードをコンピュータ等の機械にロードして実行すると、機械はメモリ管理を実践する装置になる。プログラム可能なコンピュータ上でプログラムコードを実行する場合、コンピューティング装置は一般にプロセッサ、プロセッサが読み取り可能な記憶媒体(揮発性および不揮発性メモリおよび/または記憶要素)、少なくとも1つの入力装置、および少なくとも1つの出力装置を含む。必要に応じて、プログラム(複数)をアセンブリまたは機械語で実装することができる。いずれの場合でも、言語はコンパイラ型言語またはインタプリタ型言語であることができ、ハードウェア実装と組み合わせることができる。
メモリ管理の方法および装置を、電気配線またはケーブル上、光ファイバ経由、または任意の他の形態の伝送媒体経由といった、幾つかの伝送媒体上で送信されるプログラムコードの形態で具現化した通信経由で実践することもでき、プログラムコードを、EPROM、ゲートアレイ、PLD(Programmable Logic Device)、クライアントコンピュータ、等の機械により受信およびロードおよび実行すると、その機械は本発明を実践する装置となる。汎用目的プロセッサ上で実装するときは、プログラムコードをプロセッサと結合して、本発明の機能性を起動するように動作する一意な装置を提供する。さらに、本発明と関連して使用する任意の記憶技術は常にハードウェアおよびソフトウェアの組合せであることができる。
メモリ管理を様々な図の例示的実施形態と関連して記述したが、当然のことながら、その実施形態から逸脱することなく、他の同様な実施形態を使用できるか、または修正および追加を記述した実施形態に行ってメモリ管理の同一機能を実施することができる。従って、本明細書で記述したメモリ管理はどの単一の実施形態にも限定されるべきではなく、添付請求項に従って広範囲に解釈されるべきである。
Claims (20)
- メモリを管理する方法であって、
メモリ管理データ構造に従ってメモリにアクセスするステップであって、前記メモリ管理データ構造は前記メモリに関連する情報を備えるステップと、
前記メモリの指定位置を、メモリ状態に関連する情報で動的に更新するステップと、
前記メモリ管理データ構造を、メモリ状態に関連する情報で動的に更新するステップと
を含むことを特徴とする方法。 - 前記メモリ管理データ構造を、前記メモリ内の前記指定位置に格納した前記情報に従って生成するステップをさらに含むことを特徴とする請求項1に記載の方法。
- 前記メモリはフラッシュメモリを備え、
前記メモリ管理データ構造を揮発性メモリに格納し、
前記揮発性メモリに対する電源不足の後に電源を前記揮発性メモリに加える度に、前記メモリ管理データ構造を構築すること
を特徴とする請求項2に記載の方法。 - 前記メモリは複数のブロックを備え、各ブロックは複数のページを備え、
前記メモリ内の前記指定位置は、
各ブロック内の第1の指定ページであって、夫々のブロックの各々第1の指定ページは、
夫々のブロックの状態が良好および不良のうちの1つであることおよび、
夫々のブロックは消去および未消去のうちの1つであること
を示す第1の指定ページおよび、
各ブロック内の第2の指定ページであって、夫々のブロックの各々第2の指定ページは、
夫々のブロックの論理ブロックアドレスと各ページとの間の関係、
夫々のブロックの各ページ部分の有効性状態および、
前記メモリ内のブロックを消去した回数を示すブロックシーケンス番号
を示す第2の指定ページ
を備えることを特徴とする請求項1に記載の方法。 - 前記メモリ管理データ構造を構築するステップをさらに備え、前記の構築動作は、
各ブロック内の各々の第1の指定ページを読み取るステップと、
前記メモリ管理データ構造を、各々の読み取った第1の指定ページ内に含まれる情報に従って構築するステップと、
各ブロック内の各々の第2の指定ページを読み取るステップと、
前記メモリ管理データ構造を、各々の読み取った第2の指定ページに含まれる情報に従って構築するステップと
を含むことを特徴とする請求項4に記載の方法。 - 前記第2の指定ページを、前記第2の指定ページを読み取ることを試みる前に読み取ることおよび、
前記の第1の指定ページを、前記の第2の指定ページを読み取る際にエラーが発生した場合にのみ読み取ること
を特徴とする請求項5に記載の方法。 - 前記メモリに対する電源不足の後に電源を前記メモリに加える度に、前記メモリ管理データ構造を再構築することを特徴とする請求項5に記載の方法。
- 前記メモリ管理データ構造は前記メモリのアクティブページを示し、アクティブページは書き込み命令に応じて書き込むべき次のページを示すことを特徴とする請求項5に記載の方法。
- 前記アクティブページへの書き込みの際、次のアクティブページの位置を示すよう前記メモリ管理データ構造を更新するステップをさらに備え、前記の次のアクティブページは、
現在アクセスされているブロックおよび、
前記の現在アクセスされているブロックが満杯の場合、次の利用可能なブロック
のうちの1つにおける最小ページアドレスを有する消去ページを備えることを特徴とする請求項8に記載の方法。 - 前記メモリは複数のブロックを備え、各ブロックは複数のページを備えること、前記メモリ管理データ構造は、
前記メモリの論理ブロックアドレスとページアドレスとの間の関係および夫々のブロックの各ページ部分の有効性状態を示すデータ構造、
書き込みに利用可能な消去ブロックを示すデータ構造、
各ブロック内の有効なページの数を示すデータ構造、
書き込み命令に応じて書き込むべき次のページを示すデータ構造および、
前記メモリ内でブロックが消去された回数を示すブロックシーケンス番号を示すデータ構造
のうちの少なくとも1つを備えることを特徴とする請求項1に記載の方法。 - メモリを管理する装置であって、
第2のメモリ部を管理するメモリ管理データ構造を備えるための第1のメモリ部、
各ブロックが複数のページを備える複数のブロックを備える前記第2のメモリ部および、
制御装置部であって、
前記第2のメモリ部に対するアクセスを制御して、
前記メモリ管理データ構造を構築する制御装置部
を備えることを特徴とする装置。 - 前記の第1のメモリ部は揮発性メモリを備えることおよび、
前記の第2のメモリ部は不揮発性メモリを備えること
を特徴とする請求項11に記載の装置。 - 前記の第2のメモリ部はフラッシュメモリを備えることを特徴とする請求項11に記載の装置。
- 前記の第2のメモリ部は、
各ブロック内の第1の指定ページであって、夫々のブロックの各々の第1の指定ページは、
夫々のブロックの状態が良好および不良のうちの1つであることおよび、
夫々のブロックは消去および未消去のうちの1つであること
を示す第1の指定ページおよび、
各ブロック内の第2の指定ページであって、夫々のブロックの各々の第2の指定ページは、
夫々のブロックの論理ブロックアドレスと各ページとの間の関係、
夫々のブロックの各ページ部分の有効性状態および、
前記メモリ内のブロックを消去した回数を示すブロックシーケンス番号
を示す第2の指定ページ
を備えることを特徴とする請求項11に記載の装置。 - 前記制御装置部は、前記第1のメモリ部に対する電源不足の後に電源を前記第1のメモリ部に加える度に、前記第1および第2の指定ページに含まれる情報に従って前記第1のメモリ部内に前記メモリ管理データ構造を構築することを特徴とする請求項14に記載の装置。
- 前記メモリ管理データ構造は、
前記第2のメモリ部の論理ブロックアドレスとページアドレスとの間の関係および夫々のブロックの各ページ部分の有効性状態を示すデータ構造、
書き込みに利用可能な消去ブロックを示すデータ構造、
各ブロック内の有効なページの数を示すデータ構造、
書き込み命令に応じて書き込むべき次のページを示すデータ構造および、
前記メモリ内でブロックが消去された回数を示すブロックシーケンス番号を示すデータ構造
のうちの少なくとも1つを備えることを特徴とする請求項11に記載の装置。 - 第2のメモリ内の指定位置に格納した情報に従って第1のメモリ内にメモリ管理データ構造を生成するステップであって、前記第1のメモリに対する電源不足の後に電源を前記第1のメモリに加える度に、前記メモリ管理データ構造を生成することを特徴とするステップ、
前記メモリ管理データ構造に従って前記第2のメモリにアクセスするステップであって、前記メモリ管理データ構造は前記第2のメモリに関連する情報を備えるステップ、
前記第2のメモリの指定位置を、第2のメモリの状態に関連する情報で動的に更新するステップおよび、
前記メモリ管理データ構造を、第2のメモリの状態に関連する情報で動的に更新するステップ
の動作を実施するコンピュータ実行可能命令を有するコンピュータ可読媒体。 - 前記第2のメモリは複数のブロックを備え、各ブロックは複数のページを備えること、前記のコンピュータ可読媒体は、
夫々のブロックにおける第1の指定ページを読み取るステップであって、夫々のブロックの第1の指定ページは、
夫々のブロックの状態が良好および不良のうちの1つであることおよび、
夫々のブロックは消去および未消去のうちの1つであること
を示すステップ、
各々の読み取った第1の指定ページに含まれる情報に従って前記メモリ管理データ構造を構築するステップ、
夫々のブロック内の第2の指定ページを読み取るステップであって、夫々のブロックの第2の指定ページは、
夫々のブロックの論理ブロックアドレスと各ページとの関係、
夫々のブロックの各ページ部分の有効性状態および、
前記メモリ内でブロックが消去された回数を示すブロックシーケンス番号
を示すステップおよび、
各々の読み取った第2の指定ページに含まれる情報に従って前記メモリ管理データ構造を構築するステップ
のためのコンピュータ実行可能命令をさらに有することを特徴とする請求項17に記載のコンピュータ可読媒体。 - 前記メモリ管理データ構造は前記第2のメモリのアクティブページを示し、前記アクティブページは書き込み命令に応じて書き込むべき次のページを示すこと、前記コンピュータ可読媒体は
前記アクティブページへの書き込みの際、次のアクティブページの位置を示すよう前記メモリ管理データ構造を更新するステップであって、前記の次のアクティブページは、
現在アクセスされているブロックおよび、
前記の現在アクセスされているブロックが満杯の場合、次の利用可能なブロック
のうちの1つにおける最小ページアドレスを有する消去ページを備えるステップ
のためのコンピュータ実行可能命令をさらに有することを特徴とする請求項17に記載のコンピュータ可読媒体。 - 前記第2のメモリは複数のブロックを備え、各ブロックは複数のページを備えること、前記メモリ管理データ構造は
前記第2のメモリの論理ブロックアドレスとページアドレスとの間の関係および夫々のブロックの各ページ部分の有効性状態を示すデータ構造、
書き込みに利用可能な消去ブロックを示すデータ構造、
各ブロック内の有効なページの数を示すデータ構造、
書き込み命令に応じて書き込むべき次のページを示すデータ構造および、
前記メモリ内でブロックが消去された回数を示すブロックシーケンス番号を示すデータ構造
のうち少なくとも1つを備えることを特徴とする請求項17に記載のコンピュータ可読媒体。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/245,919 US20070083697A1 (en) | 2005-10-07 | 2005-10-07 | Flash memory management |
PCT/US2006/039192 WO2007044541A1 (en) | 2005-10-07 | 2006-10-06 | Flash memory management |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009512022A true JP2009512022A (ja) | 2009-03-19 |
Family
ID=37912139
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008534724A Pending JP2009512022A (ja) | 2005-10-07 | 2006-10-06 | フラッシュメモリの管理 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20070083697A1 (ja) |
EP (1) | EP1934752A4 (ja) |
JP (1) | JP2009512022A (ja) |
KR (1) | KR20080063466A (ja) |
CN (1) | CN101283335A (ja) |
BR (1) | BRPI0616926A2 (ja) |
WO (1) | WO2007044541A1 (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102667736A (zh) * | 2010-01-27 | 2012-09-12 | 株式会社东芝 | 存储器管理装置及存储器管理方法 |
JP2013025793A (ja) * | 2011-07-14 | 2013-02-04 | Lsi Corp | フラッシュメディアコントローラの内部のメタデータハンドリング |
JP2014191372A (ja) * | 2013-03-26 | 2014-10-06 | Mega Chips Corp | 不揮発性記憶システム、不揮発性記憶装置、メモリコントローラ、および、プログラム |
US9710375B2 (en) | 2014-05-29 | 2017-07-18 | International Business Machines Corporation | Writing an address conversion table for nonvolatile memory wear leveling |
Families Citing this family (138)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8452912B2 (en) * | 2007-10-11 | 2013-05-28 | Super Talent Electronics, Inc. | Flash-memory system with enhanced smart-storage switch and packed meta-data cache for mitigating write amplification by delaying and merging writes until a host read |
US8266367B2 (en) * | 2003-12-02 | 2012-09-11 | Super Talent Electronics, Inc. | Multi-level striping and truncation channel-equalization for flash-memory system |
US8341332B2 (en) * | 2003-12-02 | 2012-12-25 | Super Talent Electronics, Inc. | Multi-level controller with smart storage transfer manager for interleaving multiple single-chip flash memory devices |
US8037234B2 (en) * | 2003-12-02 | 2011-10-11 | Super Talent Electronics, Inc. | Command queuing smart storage transfer manager for striping data to raw-NAND flash modules |
US20090193184A1 (en) * | 2003-12-02 | 2009-07-30 | Super Talent Electronics Inc. | Hybrid 2-Level Mapping Tables for Hybrid Block- and Page-Mode Flash-Memory System |
US20110145489A1 (en) * | 2004-04-05 | 2011-06-16 | Super Talent Electronics, Inc. | Hybrid storage device |
US20110179219A1 (en) * | 2004-04-05 | 2011-07-21 | Super Talent Electronics, Inc. | Hybrid storage device |
US7692682B2 (en) | 2005-04-28 | 2010-04-06 | Apple Inc. | Video encoding in a video conference |
US7558804B1 (en) * | 2005-08-26 | 2009-07-07 | American Megatrends, Inc. | Method, apparatus, and computer-readable medium for space-efficient storage of variables in a non-volatile computer memory |
WO2007058617A1 (en) * | 2005-11-17 | 2007-05-24 | Chee Keng Chang | A controller for non-volatile memories, and methods of operating the memory controller |
FI20060427L (fi) * | 2006-05-03 | 2007-11-04 | Tellabs Oy | Menetelmä ja laitteisto peräkkäistiedoston käsittelemiseksi |
US20070268905A1 (en) * | 2006-05-18 | 2007-11-22 | Sigmatel, Inc. | Non-volatile memory error correction system and method |
US7536500B2 (en) * | 2006-09-29 | 2009-05-19 | Intel Corporation | Header blocks for flash memory writes |
KR100791325B1 (ko) * | 2006-10-27 | 2008-01-03 | 삼성전자주식회사 | 비휘발성 메모리를 관리하는 장치 및 방법 |
US8380944B2 (en) * | 2007-03-01 | 2013-02-19 | Douglas Dumitru | Fast block device and methodology |
US7991942B2 (en) | 2007-05-09 | 2011-08-02 | Stmicroelectronics S.R.L. | Memory block compaction method, circuit, and system in storage devices based on flash memories |
US8041883B2 (en) * | 2007-05-09 | 2011-10-18 | Stmicroelectronics S.R.L. | Restoring storage devices based on flash memories and related circuit, system, and method |
US7882301B2 (en) * | 2007-05-09 | 2011-02-01 | Stmicroelectronics S.R.L. | Wear leveling in storage devices based on flash memories and related circuit, system, and method |
DE102007023408A1 (de) * | 2007-05-18 | 2008-11-20 | Mobotix Ag | Verfahren zur Speicherverwaltung |
US8850102B2 (en) * | 2007-08-23 | 2014-09-30 | Nokia Corporation | Flash memory with small data programming capability |
US9141477B2 (en) * | 2007-10-12 | 2015-09-22 | International Business Machines Corporation | Data protection for variable length records by utilizing high performance block storage metadata |
KR101464338B1 (ko) * | 2007-10-25 | 2014-11-25 | 삼성전자주식회사 | 불휘발성 메모리 장치를 이용한 데이터 저장장치, 메모리시스템, 그리고 컴퓨터 시스템 |
KR20100133359A (ko) * | 2007-12-24 | 2010-12-21 | 동우 화인켐 주식회사 | 이리듐 착물, 이를 포함하는 유기전기발광소자 |
US7934052B2 (en) * | 2007-12-27 | 2011-04-26 | Pliant Technology, Inc. | System and method for performing host initiated mass storage commands using a hierarchy of data structures |
US8397014B2 (en) * | 2008-02-04 | 2013-03-12 | Apple Inc. | Memory mapping restore and garbage collection operations |
US8230317B2 (en) * | 2008-04-09 | 2012-07-24 | International Business Machines Corporation | Data protection method for variable length records by utilizing high performance block storage metadata |
US8843691B2 (en) * | 2008-06-25 | 2014-09-23 | Stec, Inc. | Prioritized erasure of data blocks in a flash storage device |
US8504776B2 (en) * | 2008-08-29 | 2013-08-06 | Infineon Technologies Ag | Device and method for controlling caches |
CN101676882B (zh) * | 2008-09-16 | 2013-01-16 | 美光科技公司 | 存储器装置的内嵌映射信息 |
US8732388B2 (en) | 2008-09-16 | 2014-05-20 | Micron Technology, Inc. | Embedded mapping information for memory devices |
US7962801B2 (en) * | 2008-10-15 | 2011-06-14 | Silicon Motion, Inc. | Link table recovery method |
US8285970B2 (en) * | 2008-11-06 | 2012-10-09 | Silicon Motion Inc. | Method for managing a memory apparatus, and associated memory apparatus thereof |
CN101710237B (zh) * | 2008-12-30 | 2012-10-24 | 深圳市江波龙电子有限公司 | 以闪存为存储介质的设备生产流程 |
US8190832B2 (en) * | 2009-01-29 | 2012-05-29 | International Business Machines Corporation | Data storage performance enhancement through a write activity level metric recorded in high performance block storage metadata |
CN101510445B (zh) * | 2009-03-19 | 2012-11-21 | 无锡中星微电子有限公司 | 存储器坏块表的保存方法以及装置 |
TWI433157B (zh) * | 2009-09-04 | 2014-04-01 | Silicon Motion Inc | 存取快閃記憶體的方法以及相關之記憶裝置 |
US9063886B2 (en) | 2009-09-18 | 2015-06-23 | Apple Inc. | Metadata redundancy schemes for non-volatile memories |
TWI421870B (zh) * | 2009-10-30 | 2014-01-01 | Phison Electronics Corp | 用於快閃記憶體的資料寫入方法及其控制器與儲存系統 |
US9021185B2 (en) * | 2009-11-23 | 2015-04-28 | Amir Ban | Memory controller and methods for enhancing write performance of a flash device |
US8365041B2 (en) | 2010-03-17 | 2013-01-29 | Sandisk Enterprise Ip Llc | MLC self-raid flash data protection scheme |
US8726126B2 (en) * | 2010-03-23 | 2014-05-13 | Apple Inc. | Non-regular parity distribution detection via metadata tag |
US8892981B2 (en) | 2010-09-30 | 2014-11-18 | Apple Inc. | Data recovery using outer codewords stored in volatile memory |
WO2012048118A2 (en) | 2010-10-06 | 2012-04-12 | Blackbird Technology Holdings, Inc. | Method and apparatus for adaptive searching of distributed datasets |
US9042353B2 (en) | 2010-10-06 | 2015-05-26 | Blackbird Technology Holdings, Inc. | Method and apparatus for low-power, long-range networking |
WO2012100145A1 (en) * | 2011-01-21 | 2012-07-26 | Blackbird Technology Holdings, Inc. | Method and apparatus for memory management |
US8954647B2 (en) | 2011-01-28 | 2015-02-10 | Apple Inc. | Systems and methods for redundantly storing metadata for non-volatile memory |
US9497715B2 (en) | 2011-03-02 | 2016-11-15 | Blackbird Technology Holdings, Inc. | Method and apparatus for addressing in a resource-constrained network |
US8910020B2 (en) | 2011-06-19 | 2014-12-09 | Sandisk Enterprise Ip Llc | Intelligent bit recovery for flash memory |
US8909982B2 (en) | 2011-06-19 | 2014-12-09 | Sandisk Enterprise Ip Llc | System and method for detecting copyback programming problems |
US8929961B2 (en) | 2011-07-15 | 2015-01-06 | Blackbird Technology Holdings, Inc. | Protective case for adding wireless functionality to a handheld electronic device |
US9058289B2 (en) | 2011-11-07 | 2015-06-16 | Sandisk Enterprise Ip Llc | Soft information generation for memory systems |
US8954822B2 (en) | 2011-11-18 | 2015-02-10 | Sandisk Enterprise Ip Llc | Data encoder and decoder using memory-specific parity-check matrix |
US9048876B2 (en) | 2011-11-18 | 2015-06-02 | Sandisk Enterprise Ip Llc | Systems, methods and devices for multi-tiered error correction |
US8924815B2 (en) | 2011-11-18 | 2014-12-30 | Sandisk Enterprise Ip Llc | Systems, methods and devices for decoding codewords having multiple parity segments |
US20130275692A1 (en) * | 2012-04-16 | 2013-10-17 | Shak Loong Kwok | Storage device and methods thereof |
CN102722442A (zh) * | 2012-06-13 | 2012-10-10 | 禹芙蓉 | 一种宏状态自动分析方法及其装置 |
US9699263B1 (en) | 2012-08-17 | 2017-07-04 | Sandisk Technologies Llc. | Automatic read and write acceleration of data accessed by virtual machines |
US9501398B2 (en) | 2012-12-26 | 2016-11-22 | Sandisk Technologies Llc | Persistent storage device with NVRAM for staging writes |
US9239751B1 (en) | 2012-12-27 | 2016-01-19 | Sandisk Enterprise Ip Llc | Compressing data from multiple reads for error control management in memory systems |
US9612948B2 (en) | 2012-12-27 | 2017-04-04 | Sandisk Technologies Llc | Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device |
US9003264B1 (en) | 2012-12-31 | 2015-04-07 | Sandisk Enterprise Ip Llc | Systems, methods, and devices for multi-dimensional flash RAID data protection |
US9454420B1 (en) | 2012-12-31 | 2016-09-27 | Sandisk Technologies Llc | Method and system of reading threshold voltage equalization |
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 |
US9478271B2 (en) * | 2013-03-14 | 2016-10-25 | Seagate Technology Llc | Nonvolatile memory data recovery after power failure |
US9069695B2 (en) | 2013-03-14 | 2015-06-30 | Apple Inc. | Correction of block errors for a system having non-volatile memory |
US9870830B1 (en) | 2013-03-14 | 2018-01-16 | Sandisk Technologies Llc | Optimal multilevel sensing for reading data from a storage medium |
US9136877B1 (en) | 2013-03-15 | 2015-09-15 | Sandisk Enterprise Ip Llc | Syndrome layered decoding for LDPC codes |
US9009576B1 (en) | 2013-03-15 | 2015-04-14 | Sandisk Enterprise Ip Llc | Adaptive LLR based on syndrome weight |
US9244763B1 (en) | 2013-03-15 | 2016-01-26 | Sandisk Enterprise Ip Llc | System and method for updating a reading threshold voltage based on symbol transition information |
US9092350B1 (en) | 2013-03-15 | 2015-07-28 | Sandisk Enterprise Ip Llc | Detection and handling of unbalanced errors in interleaved codewords |
US9367246B2 (en) | 2013-03-15 | 2016-06-14 | Sandisk Technologies Inc. | Performance optimization of data transfer for soft information generation |
US9236886B1 (en) | 2013-03-15 | 2016-01-12 | Sandisk Enterprise Ip Llc | Universal and reconfigurable QC-LDPC encoder |
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 |
US9159437B2 (en) | 2013-06-11 | 2015-10-13 | Sandisk Enterprise IP LLC. | Device and method for resolving an LM flag issue |
US9043517B1 (en) | 2013-07-25 | 2015-05-26 | Sandisk Enterprise Ip Llc | Multipass programming in buffers implemented in non-volatile data storage systems |
US9384126B1 (en) | 2013-07-25 | 2016-07-05 | Sandisk Technologies Inc. | Methods and systems to avoid false negative results in bloom filters implemented in non-volatile data storage systems |
US9524235B1 (en) | 2013-07-25 | 2016-12-20 | Sandisk Technologies Llc | Local hash value generation in non-volatile data storage systems |
US9235509B1 (en) | 2013-08-26 | 2016-01-12 | Sandisk Enterprise Ip Llc | Write amplification reduction by delaying read access to data written during garbage collection |
US9639463B1 (en) | 2013-08-26 | 2017-05-02 | Sandisk Technologies Llc | Heuristic aware garbage collection scheme in storage systems |
US9519577B2 (en) | 2013-09-03 | 2016-12-13 | Sandisk Technologies Llc | Method and system for migrating data between flash memory devices |
US9442670B2 (en) | 2013-09-03 | 2016-09-13 | Sandisk Technologies Llc | Method and system for rebalancing data stored in flash memory devices |
US9317421B2 (en) * | 2013-09-27 | 2016-04-19 | Intel Corporation | Memory management |
US9158349B2 (en) | 2013-10-04 | 2015-10-13 | Sandisk Enterprise Ip Llc | System and method for heat dissipation |
US9323637B2 (en) | 2013-10-07 | 2016-04-26 | Sandisk Enterprise Ip Llc | Power sequencing and data hardening architecture |
US9442662B2 (en) | 2013-10-18 | 2016-09-13 | Sandisk Technologies Llc | Device and method for managing die groups |
US9298608B2 (en) | 2013-10-18 | 2016-03-29 | Sandisk Enterprise Ip Llc | Biasing for wear leveling in storage systems |
US9436831B2 (en) | 2013-10-30 | 2016-09-06 | Sandisk Technologies Llc | Secure erase in a memory device |
US9263156B2 (en) | 2013-11-07 | 2016-02-16 | Sandisk Enterprise Ip Llc | System and method for adjusting trip points within a storage device |
US9244785B2 (en) | 2013-11-13 | 2016-01-26 | Sandisk Enterprise Ip Llc | Simulated power failure and data hardening |
US9152555B2 (en) | 2013-11-15 | 2015-10-06 | Sandisk Enterprise IP LLC. | Data management with modular erase in a data storage system |
US9703816B2 (en) | 2013-11-19 | 2017-07-11 | Sandisk Technologies Llc | Method and system for forward reference logging in a persistent datastore |
US9520197B2 (en) | 2013-11-22 | 2016-12-13 | Sandisk Technologies Llc | Adaptive erase of a storage device |
US9122636B2 (en) | 2013-11-27 | 2015-09-01 | Sandisk Enterprise Ip Llc | Hard power fail architecture |
US9280429B2 (en) | 2013-11-27 | 2016-03-08 | Sandisk Enterprise Ip Llc | Power fail latching based on monitoring multiple power supply voltages in a storage device |
US9520162B2 (en) | 2013-11-27 | 2016-12-13 | Sandisk Technologies Llc | DIMM device controller supervisor |
CN110825324B (zh) * | 2013-11-27 | 2023-05-30 | 北京奥星贝斯科技有限公司 | 混合存储的控制方法及混合存储系统 |
US9250676B2 (en) | 2013-11-29 | 2016-02-02 | Sandisk Enterprise Ip Llc | Power failure architecture and verification |
US9582058B2 (en) | 2013-11-29 | 2017-02-28 | Sandisk Technologies Llc | Power inrush management of storage devices |
US9092370B2 (en) | 2013-12-03 | 2015-07-28 | Sandisk Enterprise Ip Llc | Power failure tolerant cryptographic erase |
US9235245B2 (en) | 2013-12-04 | 2016-01-12 | Sandisk Enterprise Ip Llc | Startup performance and power isolation |
US9129665B2 (en) | 2013-12-17 | 2015-09-08 | Sandisk Enterprise Ip Llc | Dynamic brownout adjustment in a storage device |
US9549457B2 (en) | 2014-02-12 | 2017-01-17 | Sandisk Technologies Llc | System and method for redirecting airflow across an electronic assembly |
US9497889B2 (en) | 2014-02-27 | 2016-11-15 | Sandisk Technologies Llc | Heat dissipation for substrate assemblies |
US9703636B2 (en) | 2014-03-01 | 2017-07-11 | Sandisk Technologies Llc | Firmware reversion trigger and control |
TWI514401B (zh) * | 2014-03-11 | 2015-12-21 | Winbond Electronics Corp | 串列反及式快閃記憶體及其內建可變式壞區的管理方法 |
US9519319B2 (en) | 2014-03-14 | 2016-12-13 | Sandisk Technologies Llc | Self-supporting thermal tube structure for electronic assemblies |
US9485851B2 (en) | 2014-03-14 | 2016-11-01 | Sandisk Technologies Llc | Thermal tube assembly structures |
US9348377B2 (en) | 2014-03-14 | 2016-05-24 | Sandisk Enterprise Ip Llc | Thermal isolation techniques |
US9390814B2 (en) | 2014-03-19 | 2016-07-12 | Sandisk Technologies Llc | Fault detection and prediction for data storage elements |
US9454448B2 (en) | 2014-03-19 | 2016-09-27 | Sandisk Technologies Llc | Fault testing in storage devices |
US9448876B2 (en) | 2014-03-19 | 2016-09-20 | Sandisk Technologies Llc | Fault detection and prediction in storage devices |
US9390021B2 (en) | 2014-03-31 | 2016-07-12 | Sandisk Technologies Llc | Efficient cache utilization in a tiered data structure |
US9626399B2 (en) | 2014-03-31 | 2017-04-18 | Sandisk Technologies Llc | Conditional updates for reducing frequency of data modification operations |
US9626400B2 (en) | 2014-03-31 | 2017-04-18 | Sandisk Technologies Llc | Compaction of information in tiered data structure |
US9697267B2 (en) | 2014-04-03 | 2017-07-04 | Sandisk Technologies Llc | Methods and systems for performing efficient snapshots in tiered data structures |
US10114557B2 (en) | 2014-05-30 | 2018-10-30 | Sandisk Technologies Llc | Identification of hot regions to enhance performance and endurance of a non-volatile storage device |
US10372613B2 (en) | 2014-05-30 | 2019-08-06 | Sandisk Technologies Llc | Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device |
US9645749B2 (en) | 2014-05-30 | 2017-05-09 | Sandisk Technologies Llc | Method and system for recharacterizing the storage density of a memory device or a portion thereof |
US10162748B2 (en) | 2014-05-30 | 2018-12-25 | Sandisk Technologies Llc | Prioritizing garbage collection and block allocation based on I/O history for logical address regions |
US10146448B2 (en) | 2014-05-30 | 2018-12-04 | Sandisk Technologies Llc | Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device |
US9070481B1 (en) | 2014-05-30 | 2015-06-30 | Sandisk Technologies Inc. | Internal current measurement for age measurements |
US10656840B2 (en) | 2014-05-30 | 2020-05-19 | Sandisk Technologies Llc | Real-time I/O pattern recognition to enhance performance and endurance of a storage device |
US9703491B2 (en) | 2014-05-30 | 2017-07-11 | Sandisk Technologies Llc | Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device |
US10656842B2 (en) | 2014-05-30 | 2020-05-19 | Sandisk Technologies Llc | Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device |
US9093160B1 (en) | 2014-05-30 | 2015-07-28 | Sandisk Technologies Inc. | Methods and systems for staggered memory operations |
US8891303B1 (en) | 2014-05-30 | 2014-11-18 | Sandisk Technologies Inc. | Method and system for dynamic word line based configuration of a three-dimensional memory device |
US9652381B2 (en) | 2014-06-19 | 2017-05-16 | Sandisk Technologies Llc | Sub-block garbage collection |
US9443601B2 (en) | 2014-09-08 | 2016-09-13 | Sandisk Technologies Llc | Holdup capacitor energy harvesting |
US9996297B2 (en) * | 2014-11-14 | 2018-06-12 | SK Hynix Inc. | Hot-cold data separation method in flash translation layer |
CN106776362B (zh) * | 2015-11-24 | 2019-12-03 | 中芯国际集成电路制造(上海)有限公司 | 存储器的控制方法及装置 |
US10203888B2 (en) * | 2015-12-18 | 2019-02-12 | Intel Corporation | Technologies for performing a data copy operation on a data storage device with a power-fail-safe data structure |
KR102299682B1 (ko) | 2017-09-13 | 2021-09-09 | 삼성전자주식회사 | 메모리 컨트롤러의 동작 방법 및 그것을 포함하는 저장 장치 및 저장 장치의 동작 방법 |
US10620870B2 (en) | 2017-12-08 | 2020-04-14 | Intel Corporation | Data storage device with bytewise copy |
US10936199B2 (en) * | 2018-07-17 | 2021-03-02 | Silicon Motion, Inc. | Flash controllers, methods, and corresponding storage devices capable of rapidly/fast generating or updating contents of valid page count table |
US11216349B2 (en) * | 2018-10-12 | 2022-01-04 | Micron Technology, Inc. | Reactive read based on metrics to screen defect prone memory blocks |
CN110471620B (zh) * | 2019-07-09 | 2022-11-22 | 深圳市德明利技术股份有限公司 | 一种闪存的数据引导方法和装置以及设备 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003015929A (ja) * | 2001-06-28 | 2003-01-17 | Matsushita Electric Ind Co Ltd | 不揮発性メモリの制御方法 |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5295101A (en) * | 1992-01-31 | 1994-03-15 | Texas Instruments Incorporated | Array block level redundancy with steering logic |
JP3641280B2 (ja) * | 1992-10-30 | 2005-04-20 | インテル・コーポレーション | フラッシュeepromアレイのクリーン・アップすべきブロックを決定する方法 |
JP2856621B2 (ja) * | 1993-02-24 | 1999-02-10 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 一括消去型不揮発性メモリおよびそれを用いる半導体ディスク装置 |
KR970008188B1 (ko) * | 1993-04-08 | 1997-05-21 | 가부시끼가이샤 히다찌세이사꾸쇼 | 플래시메모리의 제어방법 및 그것을 사용한 정보처리장치 |
US5845313A (en) * | 1995-07-31 | 1998-12-01 | Lexar | Direct logical block addressing flash memory mass storage architecture |
US5930815A (en) * | 1995-07-31 | 1999-07-27 | Lexar Media, Inc. | Moving sequential sectors within a block of information in a flash memory mass storage architecture |
US5758056A (en) * | 1996-02-08 | 1998-05-26 | Barr; Robert C. | Memory system having defective address identification and replacement |
US5835430A (en) * | 1997-07-25 | 1998-11-10 | Rockwell International Corporation | Method of providing redundancy in electrically alterable memories |
GB9903490D0 (en) * | 1999-02-17 | 1999-04-07 | Memory Corp Plc | Memory system |
US20020019814A1 (en) * | 2001-03-01 | 2002-02-14 | Krishnamurthy Ganesan | Specifying rights in a digital rights license according to events |
US7103574B1 (en) * | 1999-03-27 | 2006-09-05 | Microsoft Corporation | Enforcement architecture and method for digital rights management |
US6297988B1 (en) * | 2000-02-25 | 2001-10-02 | Advanced Micro Devices, Inc. | Mode indicator for multi-level memory |
DE60009031D1 (de) * | 2000-03-28 | 2004-04-22 | St Microelectronics Srl | Verfahren zur logischen Aufteilung einer nichtflüchtigen Speichermatrix |
US6772274B1 (en) * | 2000-09-13 | 2004-08-03 | Lexar Media, Inc. | Flash memory system and method implementing LBA to PBA correlation within flash memory array |
GB0123415D0 (en) * | 2001-09-28 | 2001-11-21 | Memquest Ltd | Method of writing data to non-volatile memory |
US6977847B2 (en) * | 2001-11-23 | 2005-12-20 | M-Systems Flash Disk Pioneers Ltd. | Detecting partially erased units in flash devices |
US7496540B2 (en) * | 2002-03-27 | 2009-02-24 | Convergys Cmg Utah | System and method for securing digital content |
US7366915B2 (en) * | 2002-04-30 | 2008-04-29 | Microsoft Corporation | Digital license with referral information |
KR100457812B1 (ko) * | 2002-11-14 | 2004-11-18 | 삼성전자주식회사 | 플래시 메모리, 그에 따른 플래시 메모리 액세스 장치 및방법 |
US7801819B2 (en) * | 2003-10-03 | 2010-09-21 | Sony Corporation | Rendering rights delegation system and method |
KR20060089486A (ko) * | 2005-02-04 | 2006-08-09 | 엘지전자 주식회사 | 플래시 파일 시스템의 오류 복구 방법 |
-
2005
- 2005-10-07 US US11/245,919 patent/US20070083697A1/en not_active Abandoned
-
2006
- 2006-10-06 WO PCT/US2006/039192 patent/WO2007044541A1/en active Application Filing
- 2006-10-06 KR KR1020087007944A patent/KR20080063466A/ko not_active Application Discontinuation
- 2006-10-06 CN CNA2006800373316A patent/CN101283335A/zh active Pending
- 2006-10-06 JP JP2008534724A patent/JP2009512022A/ja active Pending
- 2006-10-06 BR BRPI0616926-0A patent/BRPI0616926A2/pt not_active Application Discontinuation
- 2006-10-06 EP EP06825577A patent/EP1934752A4/en not_active Withdrawn
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003015929A (ja) * | 2001-06-28 | 2003-01-17 | Matsushita Electric Ind Co Ltd | 不揮発性メモリの制御方法 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102667736A (zh) * | 2010-01-27 | 2012-09-12 | 株式会社东芝 | 存储器管理装置及存储器管理方法 |
TWI470426B (zh) * | 2010-01-27 | 2015-01-21 | Toshiba Kk | Memory management device and memory management method |
JP2013025793A (ja) * | 2011-07-14 | 2013-02-04 | Lsi Corp | フラッシュメディアコントローラの内部のメタデータハンドリング |
JP2014191372A (ja) * | 2013-03-26 | 2014-10-06 | Mega Chips Corp | 不揮発性記憶システム、不揮発性記憶装置、メモリコントローラ、および、プログラム |
US9710375B2 (en) | 2014-05-29 | 2017-07-18 | International Business Machines Corporation | Writing an address conversion table for nonvolatile memory wear leveling |
US9710378B2 (en) | 2014-05-29 | 2017-07-18 | International Business Machines Corporation | Writing an address conversion table for nonvolatile memory wear leveling |
Also Published As
Publication number | Publication date |
---|---|
EP1934752A1 (en) | 2008-06-25 |
BRPI0616926A2 (pt) | 2011-07-05 |
EP1934752A4 (en) | 2009-04-08 |
WO2007044541A1 (en) | 2007-04-19 |
CN101283335A (zh) | 2008-10-08 |
US20070083697A1 (en) | 2007-04-12 |
KR20080063466A (ko) | 2008-07-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2009512022A (ja) | フラッシュメモリの管理 | |
US9842030B2 (en) | Data storage device and flash memory control method | |
JP5035636B2 (ja) | フラッシュメモリ内のブロックにおける移動セクタ | |
US9037782B2 (en) | Method of programming memory cells and reading data, memory controller and memory storage apparatus using the same | |
US8478796B2 (en) | Uncorrectable error handling schemes for non-volatile memories | |
US8453021B2 (en) | Wear leveling in solid-state device | |
US8510502B2 (en) | Data writing method, and memory controller and memory storage apparatus using the same | |
US20070016719A1 (en) | Memory device including nonvolatile memory and memory controller | |
US9058255B2 (en) | Solid state drive and method for constructing logical-to-physical table thereof | |
TWI423026B (zh) | 資料寫入方法、記憶體控制器與記憶體儲存裝置 | |
KR20030011230A (ko) | 비휘발성 기억 장치 및 그의 재기입 제어 방법 | |
US9383929B2 (en) | Data storing method and memory controller and memory storage device using the same | |
CN112099985A (zh) | 数据储存装置以及非挥发式存储器控制方法 | |
TW201403319A (zh) | 記憶體儲存裝置、其記憶體控制器與資料寫入方法 | |
CN112596668A (zh) | 一种存储器的坏块处理方法及系统 | |
JP2006011533A (ja) | メモリカード、半導体装置、及び半導体メモリの制御方法 | |
US20130067141A1 (en) | Data writing method, and memory controller and memory storage apparatus using the same | |
JP2012068765A (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
US20210117315A1 (en) | Memory controller and flash memory system | |
US7899974B2 (en) | Nonvolatile memory, mapping control apparatus and method of the same | |
WO2020039927A1 (ja) | 不揮発性記憶装置、ホスト装置、及びデータ記憶システム | |
JP2012068764A (ja) | メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法 | |
JP2012037971A (ja) | メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法 | |
CN114637706B (zh) | 存储系统 | |
TWI813362B (zh) | 部分抹除管理方法、記憶體儲存裝置及記憶體控制電路單元 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20090903 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20120316 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120323 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20120817 |