JP3923955B2 - フラッシュメモリのエラーブロック管理方法及び装置 - Google Patents

フラッシュメモリのエラーブロック管理方法及び装置 Download PDF

Info

Publication number
JP3923955B2
JP3923955B2 JP2004106984A JP2004106984A JP3923955B2 JP 3923955 B2 JP3923955 B2 JP 3923955B2 JP 2004106984 A JP2004106984 A JP 2004106984A JP 2004106984 A JP2004106984 A JP 2004106984A JP 3923955 B2 JP3923955 B2 JP 3923955B2
Authority
JP
Japan
Prior art keywords
block
error
flash memory
spare
block map
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2004106984A
Other languages
English (en)
Other versions
JP2004310770A (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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2004310770A publication Critical patent/JP2004310770A/ja
Application granted granted Critical
Publication of JP3923955B2 publication Critical patent/JP3923955B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • 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
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/76Masking faults in memories by using spares or by reconfiguring using address translation or modifications
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/76Masking faults in memories by using spares or by reconfiguring using address translation or modifications
    • G11C29/765Masking faults in memories by using spares or by reconfiguring using address translation or modifications in solid state disks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/78Masking faults in memories by using spares or by reconfiguring using programmable devices
    • G11C29/80Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout
    • G11C29/816Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout for an application-specific layout
    • G11C29/82Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout for an application-specific layout for EEPROMs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)
  • Storage Device Security (AREA)

Description

本発明は、フラッシュメモリの使用中に発生するエラーブロックを処理する方法及び装置に係り、より詳細にはフラッシュ演算を最小化するフラッシュメモリのエラーブロック管理方法に関する。また本発明は、検証されていないフラッシュアプリケーションによる悪意的なフラッシュ演算からフラッシュメモリに保存されている重要な情報を保護するためにフラッシュメモリの一定領域を保護領域に設定して管理する方法及び装置に関する。
フラッシュメモリは、RAMやROMまたはハードディスクのようにデータ貯蔵手段ではあるが、複数のブロックを有しており、ブロック単位で消去演算を行うという点で特徴を有する。
フラッシュメモリの各ブロックには消去演算回数の制限がある。従って、フラッシュメモリが工場で出荷された後、消去演算の制限回数を超えれば、該当ブロックはエラーブロックになり得、また物理的特性のよくないブロックである場合、消去演算回数が制限回数に接近すれば、該当ブロックはエラーブロックになってしまう。そして、NANDフラッシュメモリのようなフラッシュメモリは工場で出荷される時より幾つかのブロックはエラーブロックであって、この時のエラーブロックを探す方法は製造社で提供する。また、フラッシュメモリに読取り演算を行う時、以前にフラッシュメモリに用いられたデータと異なるデータが読取られることもあり、該当ブロックもエラーブロックである。このようなエラーブロックはフラッシュメモリの使用中にあらゆるブロックから発生するか、あるいは使用する前からエラーブロックで有り得る。エラーブロックの存在はフラッシュメモリを使用し難くする要素である。
このようなエラーブロックを管理するためにはエラーブロックを管理するための情報が必要であり、かかる情報をRAMまたはEEPROMのような別途のメモリに保存して管理しうる。しかし、RAMに管理情報を保存した場合には電源が消えれば、RAMに保存された情報は全てなくなってしまう問題点があり、EEPROMのような別途のメモリに管理情報を保存する場合はシステム構築のための追加費用が必要であり、システムを複雑にする恐れがある。
このような問題点を解決するために特許文献1に開示された従来の発明はフラッシュメモリシステムでエラーブロックを処理する方法を提示したが、フラッシュメモリの一定の領域をエラーブロック管理のための部分として割り当ててエラーブロックを処理する。
図1は、前記発明のエラーブロック管理の基本単位であるチャンクの構造を示すブロック図である。従来の発明はフラッシュメモリ領域を実際データを書込み/消去するのに使われるデータ領域とエラーブロックが発生した場合、これを処理するための余分の空間である余分領域(Spare Area)とに区分し、余分領域は複数のチャンクに区分した。図1は、チャンクの構造を示している。チャンクは余分ブロック0から余分ブロックyまでのy+1個の余分ブロックよりなっている。1つのチャンクにはメモリ番地数の大きい領域にオリジナルチャンクマップ及びコピーチャンクマップが各々1つの余分ブロックに保存される。そして、揮発性メモリであるRAMにはワーキングチャンクマップが存在する。
図2は、チャンクマップのさらに詳細な構造を示す。すなわち、余分ブロック0を拡大した図面である。チャンクマップはフラッシュメモリに存在するオリジナルチャンクマップ、コピーチャンクマップ、及びRAMに存在するワーキングチャンクマップが何れも同じデータ構造を有する。まず、エラーブロック管理ヘッダ(BBM Header)部分にはエラーブロックを管理するためのメタ情報が保存されるが、例えば、総ブロックの数、チャンクマップの大きさ、チャンクマップの状態などがある。そして、各々有効フィールドとエラーデータブロック番号を有するエントリー(BBM Entry)が余分ブロックの数と同じy+1個がある。エントリーにはエラーブロックとこれに代える余分ブロックのマッピング情報が保存される。例えば7番エントリーのエラーデータブロック番号が10であれば、エラーブロックの10番ブロックがチャンクnの7番余分ブロックに再マッピング(Re−mapping)されていることを示す。
前記従来の技術の動作は次の通りである。まず、エラーブロック管理子を初期化するが、エラーブロック管理子の初期化過程はエラーブロック管理子フォーマット、チャンクフォーマット、チャンクマウント過程よりなるが、エラーブロック管理子の初期化が完了される時点はチャンクがマウントされる時点である。チャンクをマウントする過程はフレッシュメモリのコピーチャンクマップとオリジナルチャンクマップとを読取ってRAM上にワーキングチャンクマップを生成する過程である。この際、フラッシュメモリにコピーチャンクマップとオリジナルチャンクマップとを2つ維持して各種演算途中でエラーが発生しても復旧できる方法を提供する。エラーブロック管理子初期化作業が終われば準備状態になる。特定ブロックに対する接近方法は各チャンクに対して要請されたブロックがエントリーに存在するか否かを検査した後、もしエントリーに存在すれば再マッピングした結果を送る。新しいエラーブロックが見つけられた時のアルゴリズムを要約すれば次の通りである。まず、使用可能な未使用エントリーを探し、そのエントリーを含むチャンクマップを読取ってワーキングチャンクマップに書込む。次いで、新しいマッピング情報をワーキングチャンクマップの見つけられた未使用エントリーに書込む。次いで、変更された再マッピング情報をフラッシュメモリのオリジナルチャンクマップ及びコピーチャンクマップに記録する。
前述した従来の技術はフラッシュメモリ上のコピーチャンクマップとオリジナルチャンクマップ及びRAM上のワーキングチャンクマップが一貫性を保つように複数回のフラッシュメモリに対する書込み/消去演算を行う。例えば、新しい実行時間エラーブロックが発生した場合、次のような演算を必要とする。
1.オリジナルチャンクマップブロック消去演算
2.オリジナルチャンクマップブロックにオリジナルチャンクマップ書込み演算
3.オリジナルチャンクマップの状態を無効(Invalid)にする書込み演算
4.コピーチャンクマップブロック消去演算
5.コピーチャンクマップブロックにコピーチャンクマップ書込み演算
6.オリジナルチャンクマップの状態を有効(Valid)にする書込み演算
すなわち、フラッシュメモリに2回の消去演算と4回の書込み演算を行うようになる。またエラーブロックと余分ブロックとのマッピング情報が複数のチャンクに保存されるので、エラーブロックを処理するために各チャンクをマウントし、各チャンクに存在するチャンクマップ間の一貫性を維持するために複雑なアルゴリズムを行うべきである。したがって、実行時間エラーブロックが発生してもフラッシュ演算の回数を多く必要としない発明が必要である。
最近はフラッシュメモリを単純にデータの保存空間として使用するだけでなく、OS(Operating System) ROMイメージやブートローダー(Boot Loader)など保護の必要性を有するデータの保存にも用いられている。OS ROMイメージやブートローダーのようにシステムの動作に重要な役割をするデータをフラッシュメモリに保存する場合に該当領域をフラッシュメモリ関連ソフトウェアの動作エラーや、ユーザのエラーにより発生しうる消去または書込み演算から保護する必要性がある。すなわち、フラッシュメモリの一定領域を読取り専用領域に設定して管理する必要性がある。一方、読取り専用領域が設定されたフラッシュメモリの場合にもその領域内で発生するか、あるいは発生可能なエラーブロックに代えるための方法が必要であり、この場合にはエラーブロックに代える新しいブロックまた読取り専用ブロックに設定して管理する必要性がある。
米国特許6,260,151 B1
本発明の目的は、エラー領域が発生した時に少ないフラッシュ演算の回数でエラー領域を管理できる方法及び装置を提供するところにある。
本発明の他の目的は、フラッシュ関連ソフトウェアの動作エラーがフラッシュメモリの一定領域のデータを変更することを防止するために、フラッシュメモリの一定領域を保護領域として管理する方法及び装置を提供するところにある。
本発明のさらに他の目的は、フラッシュメモリの一定領域が読取り専用として保護されている場合、この領域で発生するエラーブロックに対する管理方法及び装置を提供するところにある。
前記目的を達成するための本発明のフラッシュメモリのエラーブロック管理方法は、(a) フラッシュメモリに複数の使用ブロックを有する使用領域と複数の予備ブロックを有する予備領域とを割り当て、前記使用領域または前記予備領域で発生するエラーブロックとこれに代えて使用する予備ブロックとのマッピング情報を保存するブロックマップページを複数含むブロックマップページグループを提供する段階と、(b) 前記ブロックマップページグループのうち所定の規則により選択されたブロックマップページのマッピング情報をメモリに常駐させる段階と、(c) フラッシュ演算中に発生したエラーブロックを前記常駐マッピング情報を通じて探した未使用予備ブロックとマッピングし、前記常駐マッピング情報を更新して前記更新されたマッピング情報を前記ブロックマップページグループに属するブロックマップページに記録する段階と、を含む。
前記(a)段階はフラッシュメモリに複数の使用ブロックを有する使用領域と複数の予備ブロックを有する予備領域とを割り当てる(a1)段階と、前記生成された予備ブロックと発生するエラーブロックのマッピング情報とを記録するブロックマップフィールドを予備ブロック毎に生成し、前記生成されたブロックマップフィールド、マッピング情報の時点を判断するためのカウントフィールド、及び有効性判断のためのトランジションフィールドを含むブロックマップ情報を初期化させる(a2)段階と、フラッシュメモリに存在するエラーブロックを検査して見つけられたエラーブロック及び前記見つけられたエラーブロックに代える予備ブロックとのマッピング情報を前記ブロックマップフィールドに各々記録し、前記カウントフィールドに初期カウントをしてブロックマップ情報を生成する(a3)段階と、前記ブロックマップ情報を前記ブロックマップページグループの何れか1つのブロックマップページに記録する(a4)段階と、を含む。前記ブロックマップページグループは、少なくとも2つの予備ブロックで構成されることが望ましい。前記フラッシュメモリは、複数のチップよりなる場合に、各段階はそれぞれのチップ毎に行われることが望ましい。また、前記(a)段階で前記使用ブロック及び前記予備ブロックのうち少なくとも一部を保護領域に指定して検証されていないソフトウェアの接近を遮断することが望ましい。
前記(b)段階は、ブロックマップページグループ内のブロックマップページのうちから有効でありかつ最も最近に記録されたブロックマップページを検索し、検索されたブロックマップページのマッピング情報をメモリに常駐させる。前記有効でありかつ最も最近に記録されたブロックマップページを検索する時、それぞれのブロックマップページのトランジションフィールドに記録された値及びカウントフィールドに記録された数の大きさを基準として検索することが望ましい。前記ブロックマップページグループ内のブロックマップページのうちから有効でありかつ最も最近のブロックマップページを検索する過程で有効でなく、かつ読取りエラーが表示されたブロックマップページを見つける場合、前記見つけられた読取りエラーブロックを所定の方法で復旧する段階をさらに含むことが望ましい。前記段階はフラッシュメモリが複数のチップよりなる場合に各段階はチップ毎に行われることが望ましい。
前記(c)段階は、前記常駐マッピング情報を用いて未使用予備ブロックを探す(c1)段階と、前記(c1)段階を通じて見つけられた未使用予備ブロックとエラーブロックとの番号をマッピングして前記常駐マッピング情報を更新する(c2)段階と、前記ブロックマップページグループの未使用ブロックマップページを探す(c3)段階と、前記発生したエラーブロックに記録された情報を前記見つけられた未使用予備ブロックに複写する(c4)段階と、前記更新されたマッピング情報を含む情報を前記見つけられた未使用ブロックマップページに記録する(c5)段階と、前記未使用ブロックマップページが有効であることを表示する(c6)段階と、を含む。前記 前記(c)段階は、前記エラーブロックが保護領域で発生した場合に前記保護領域を読取り/書込み可能状態に変更し、前記(c6)段階が終わった後に前記保護領域を再び読取り専用状態に変更する段階をさらに含むことが望ましい。前記各段階は、フラッシュメモリが複数のチップよりなる場合に各段階はチップ毎に行われることが望ましい。
一方、前記(c)段階は、発生したエラーブロックが読取りエラーブロックである否かを判断する(c1)段階と、読取りエラーブロックを復旧するために臨時に使用する予備ブロックを消去する(c2)段階と、読取りエラーブロックのエラーを訂正して前記予備ブロックに複写する(c3)段階と、前記ブロックマップページグループのうち未使用ブロックマップページを探す(c4)段階と、前記見つけられたブロックマップページに前記読取りエラーブロックと前記予備ブロックとのマッピング情報及び読取りエラー復旧状態であることを表示する(c5)段階と、前記読取りエラーブロックを消去する(c6)段階と、前記予備ブロックを前記消去された読取りエラーブロックに複写する(c7)段階と、前記見つけられたブロックマップページに無効であることを表示する(c8)段階と、を含む。前記読取りエラーブロックが保護領域で発生した場合に保護領域を読取り/書込み可能状態に変更し、前記(c8)段階が終わった後に前記保護領域を再び読取り専用状態に変更することが望ましい。
前記目的達成のために本発明に係る少なくとも1つ以上のフラッシュメモリチップよりなるフラッシュメモリのエラーブロック管理装置は、複数の使用ブロックを有する使用領域と使用中に発生するエラーブロックに代えるための複数の予備ブロックを有する予備領域を有し、使用中に発生するエラーブロックとこれに代える予備ブロックとのマッピング情報を保存するブロックマップページを複数有しているブロックマップページグループを前記予備領域内に有しているフラッシュメモリと、前記ブロックマップページグループ内に存在する最近の有効なブロックマップページのマッピング情報と、エラーブロックの発生時にこれを処理するためのプロセスを定義するフラッシュ装置管理子をローディングするためのメモリと、前記フラッシュメモリとメモリに電気的に連結され、フラッシュ装置管理子のコードを読取ってフラッシュメモリに対するフラッシュ演算及びエラーブロック管理をする中央処理装置と、を含む。
前記ブロックマップページグループは少なくとも2つ以上の予備ブロックで構成されたことが望ましい。一方、前記中央処理装置とフラッシュメモリ間に電気的に連結されており、中央処理装置がフラッシュ演算を行う間にフラッシュメモリに次の演算のためのデータを保存しているバッファを2つ以上有しているフラッシュメモリコントローラをさらに含むことが望ましい。前記フラッシュメモリコントローラは、フラッシュメモリの一定領域を保護領域に設定して前記フラッシュ装置管理子により検証されたフラッシュアプリケーションに対してのみ保護領域に対するフラッシュ演算を許容し、検証されていないフラッシュアプリケーションに対しては保護領域に対するフラッシュ演算を許容しないことが望ましい。
前記フラッシュメモリが複数のフラッシュメモリチップよりなる場合に前記フラッシュメモリの使用領域、予備領域と前記予備領域内のブロックマップページグループは各フラッシュメモリチップ毎に存在することが望ましい。
本発明によれば、フラッシュメモリの使用中にエラーブロックが生じた場合に少ないフラッシュメモリ演算回数でエラーブロックを管理できてシステム性能を従来の発明と違って向上させうる。また、読取り専用に設定された領域(保護領域)があるフラッシュメモリの保護領域で発生したエラーブロックに代えて割当てられる新しい領域も読取り専用に設定できて変更する必要のない重要なデータを安全に管理できる方法を提供する。
以下、添付図面に基づいて本発明に係る望ましい実施例を詳細に説明する。
図3は、本発明を具現するシステムの一実施例を示し、図4はシステムの動作を示す。システムはフラッシュメモリ100、フラッシュメモリコントローラ200、中央処理装置300、及びXIP(Execute−In−Place)可能なメモリ400を含む。XIP可能なメモリ400とは、RAMのようにその中でソフトウェアを実行させうるメモリ(以下、”主メモリ”という)を意味する。
中央処理装置300は主メモリ400に常駐したフラッシュアプリケーション410及びフラッシュ装置管理子420を用いてフラッシュメモリ100に必要な情報を書込み、読取り及び消去でき(以下、”フラッシュ演算”という)、消去演算はブロック単位で行わねばならない。
図3のようにフラッシュメモリコントローラ200が存在するシステムでは、フラッシュアプリケーション410は常にフラッシュメモリコントローラ200を通じてフラッシュメモリ100に接近する。現在フラッシュメモリ100は読取り演算の速度に比べて書込み演算の速度が約20倍ないし1000倍遅く、フラッシュメモリコントローラ200は書込みまたは読取り演算の速度を向上させうるが、このためにフラッシュメモリコントローラ200の内部に書込みまたは読取り演算のためのバッファを2つ以上備える。そして、中央処理装置300がフラッシュメモリコントローラ200のバッファにデータを入力または出力する間にフラッシュメモリコントローラ200は他のバッファのデータをフラッシュメモリ100に出力または入力することによって、フラッシュメモリコントローラ200は中央処理装置300からフラッシュメモリ100へのデータ入出力速度を向上させうる。
フラッシュアプリケーション410がフラッシュメモリ100を利用するために、フラッシュメモリコントローラ200に接近する時、フラッシュメモリコントローラ200はフラッシュメモリを一部領域を読取り専用領域に設定し、フラッシュアプリケーション410のフラッシュ演算エラーからデータを保護しうる。読取り専用領域の使用のためにフラッシュメモリコントローラ200は検証されたフラッシュアプリケーション412であることを認証し、認証を通過した検証されたフラッシュアプリケーション412だけがフラッシュメモリ100の読取り専用領域に接近して書込み及び消去演算を行え、認証を受けていない非検証されたフラッシュアプリケーション414はフラッシュメモリ100の読取り専用領域への接近によって書込み及び消去演算を不可能にしてフラッシュ演算エラーからデータを保護しうる。
NANDフラッシュメモリのようなI/Oバスインターフェースを通じて制御しうるフラッシュメモリは一般的に中央処理装置300のメモリバスインターフェースへの連結または制御が容易ではない。従って、フラッシュメモリコントローラ200はI/Oバスインターフェースを有するフラッシュメモリ100と中央処理装置300との間に位置して相異なるバスインターフェースの連結を助けることによって、容易にフラッシュメモリ100を使用可能にする。フラッシュメモリコントローラ200はフラッシュメモリ100の一定領域を読取り専用領域にするか、フラッシュ演算性能を向上させるなどの多様な機能を提供するが、フラッシュメモリコントローラ200を除いた中央処理装置300と主メモリ400及びフラッシュメモリ100だけでもシステムを具現しうる。
主メモリ400にはフラッシュ装置管理子420とフラッシュアプリケーション410とが常駐しうる。フラッシュ装置管理子420はフラッシュアプリケーション410がフラッシュメモリ100使用中に発生したエラーブロックを管理するあらゆるプロセスを定義するソフトウェアとして具現したモジュールであって、主メモリ400に常駐し、中央処理装置300がフラッシュ装置管理子420のコードを実行させることによってエラーブロックを管理する。フラッシュアプリケーション410は検証されたフラッシュアプリケーション412と非検証されたフラッシュアプリケーション414とに分けられる。検証されたフラッシュアプリケーション412はフラッシュ装置管理子420を使用する上位階層であり、フラッシュメモリのデータを故意的に破壊する動作エラーを起こさないフラッシュアプリケーション410であり、ブートローダー、フラッシュトランスレーションレイヤー、ファイルシステムなどになりうる。非検証されたフラッシュアプリケーション414はシステムを非正常的に動作させるためにクラッカー等によって作られたウイルスプログラムやハッキングプログラムなどになり得、フラッシュメモリのデータを故意的に破壊する動作エラーを起こすフラッシュアプリケーション410である。フラッシュ装置管理子420は検証されたフラッシュアプリケーション412がフラッシュメモリ100を使用可能にする。
図4は、フラッシュアプリケーション412、フラッシュ装置管理子420とフラッシュメモリコントロール200間に半物理アドレスと物理アドレスに関する関連関係を示す。検証されたフラッシュアプリケーション412はフラッシュ装置管理子420に半物理アドレスでフラッシュ演算を要請し、フラッシュ装置管理子420は半物理アドレスを物理アドレスに変換してフラッシュメモリコントローラ100にフラッシュ演算を行う。半物理アドレス及び物理アドレスは、ブロック番号*ブロックの大きさ+ブロックのオフセットで表現されうる。ブロックのオフセットは0より大きいか同じであり、ブロックの大きさより小さい値である。
半物理アドレスでブロック番号は常に使用領域110の予備ブロック番号のうち1つである。しかし、物理アドレスの場合、ブロック番号は使用領域120の使用ブロックがエラーブロックである場合、予備領域の予備ブロック番号のうち1つとなる。大部分の場合において半物理アドレスと物理アドレスとは同一であり、予備ブロックがエラーブロックである場合にのみ異なる。
一方、非検証されたフラッシュアプリケーション414はフラッシュ装置管理子420を通じず、フラッシュメモリコントローラ200に接近する場合が発生することもあるが、フラッシュメモリコントローラ200に検証されたフラッシュアプリケーション412であることを認証し、非検証されたフラッシュアプリケーション414が保護領域130にフラッシュ演算を行う場合に認証されていないためにフラッシュ演算は許容されない。
図5は、k+1個のフラッシュメモリチップで具現したフラッシュメモリのブロック図である。フラッシュメモリ100はk+1個のフラッシュメモリチップとして具現できるが、各メモリチップは使用領域110とエラーブロックを管理するための予備領域120とを有しうる。もちろん、本発明ではエラーブロックを管理するための予備領域を特定チップ、例えばチップ0、チップ1、チップ2に集中的に設けても良い。望ましい実施例において、各チップに予備領域120を設けることによってフラッシュ演算のために常にエラーブロックの有無を検査せねばならない範囲を1つのチップに限定することによって、フラッシュ演算の性能を高めうる。予備領域120の大きさは各チップから発生可能な最大エラーブロック数とエラーブロックを管理するために必要なブロック数との和で決定される。予備領域120で必要なブロックの数を決定する方法は後述する。
図6は、t個の使用領域のパーティションと1つの予備領域のパーティションとに分けられたフラッシュメモリチップを示すブロック図である。フラッシュメモリにブートローダーROMイメージ、OS ROMイメージ、またはファイルシステムデータなどを保存するのに当たって、それぞれの用途のためにフラッシュメモリに領域を区分して割り当てられ、このように区分された領域をパーティションという。各パーティションは、パーティション管理ソフトウェアがあり、各パーティション管理ソフトウェアは自体パーティションで発生可能なエラーブロックをフラッシュ装置管理子420を通じて包括的に管理する。パーティション管理ソフトウェアは検証されたフラッシュアプリケーション412であり、ブートローダー、OS、ファイルシステムなどになりうる。使用領域110は該当チップの最下位アドレスから割り当てられ、予備領域120は使用領域110が使用していない所に割り当てられるが、この順序は変わりうる。この際、使用領域110はt個のパーティションに分けられるが、パーティションの数t及び大きさはフラッシュメモリに保存される情報の種類と量によって決定される。
図7は、非保護領域と保護領域とを全て含むフラッシュメモリの何れか1つのチップの構造を示すブロック図である。フラッシュメモリ100自体でまたはフラッシュメモリコントローラ200がフラッシュメモリの一定領域を読取り専用領域(保護領域)に設定できるならば、図7のような構造で該当チップの使用領域110と予備領域120は保護領域130と非保護領域140とに分けられる。保護領域130は検証されたフラッシュアプリケーション412にのみフラッシュ演算が許容され、非検証フラッシュアプリケーション414はフラッシュ演算は許容されないか、読取り演算だけ可能である。すなわち、OS ROMイメージやブートローダーのように特別に保護されるべきデータが記録される領域であると言える。フラッシュアプリケーションが保護領域130に接近する時は常にフラッシュアプリケーションの認証段階を経なければならない。フラッシュアプリケーションが検証されたフラッシュアプリケーションであるか否かを判断できる認証方法は認証のための特定コードの有無で判断できる。すなわち、特定コードがあるフラッシュアプリケーションに対してフラッシュ装置管理子420はフラッシュメモリコントローラ200にフラッシュアプリケーションの接近許容を要請しうる。しかし、このような方法以外にも認証方法は他の多様な方法で具現しうる。非保護領域140はフラッシュアプリケーション410が読取り、書込み及び消去が何れも可能な領域をいう。図7において、非保護領域140は使用領域110と予備領域120とに亙っている形に具現した。保護使用領域は最下位アドレスから割当てられ、その上に非保護使用領域、非保護予備領域、及び保護予備領域が順次に割当てられる。しかし、この順序は変わりうる。
図8は、全ての領域が非保護領域よりなるフラッシュメモリの何れか1つのチップの構造を示すブロック図である。もし、OS ROMイメージやブートローダーのように特別に保護されねばならないデータがない場合であれば、全ての領域を非保護領域140に設定して使用しても良い。かかる場合にあらゆるパーティションに対してフラッシュ演算が可能である。
図9は、y個のブロックよりなる1つのパーティションの構造を示すブロック図である。ブロックはフラッシュメモリで消去演算の単位であって、何れかのブロックに1つのビットでもエラーが生じれば、該当ブロックはエラーブロックになる。このようなエラーブロックは使用領域110でも発生し、あるいは予備領域120でも発生しうる。
図10は、非保護領域と保護領域とを共に含む予備領域の構造を示すブロック図である。図10の予備領域120は、非保護領域140のエラーブロックに代えるためのm個の予備ブロック154と保護領域130のエラーブロックに代えるためのn個の予備ブロック155とを含んで合計m+n個の予備ブロックと、使用領域110または予備領域120のエラーブロックとこれに代えるための非保護または保護予備ブロック154または155をマッピングする情報を含んでいる非保護または保護ブロックマップページグループ150または158と、読取り領域のエラーを処理するために指定した1つの予備ブロックであるトランスファブロック152、及びパーティション情報を含んでいるパーティション情報ブロック156を含んでいる。前記nとmとの大きさは固定することもあるが、変更可能に具現しうる。例えば、合計m+n=100である時、保護ブロックでエラーが発生しない間に100回連続して非保護ブロックでエラーが発生した場合にm=100、n=0になりうる。
ブロックマップページグループは、使用領域110及び予備領域120内の非保護領域140のエラーブロックとこれに代える予備ブロック154とのマッピング情報を含んでいる非保護ブロックマップページグループ150と、使用領域110及び予備領域120内の保護領域130のエラーブロックとこれに代える予備ブロック155とのマッピング情報を含んでいる保護ブロックマップページグループ158を含む概念として使用する。非保護ブロックマップページグループ150及び保護ブロックマップページグループ158は各々2つのブロックで構成されることが望ましく、これについては後述する。一方、非保護ブロックマップページグループ150と保護ブロックマップページグループ158とを区別せず、1つのブロックマップページグループとして使用しても良いが、この場合にもブロックマップページグループは2つのブロックで構成されることが望ましい。
パーティション情報ブロック156はチップのパーティションに関する情報を含んでいるブロックであって、パーティションに対する情報をフラッシュメモリに保存しなければ、パーティション情報ブロック156は予備領域120に割当てられない。
トランスファブロック152は読取りエラーが発生したブロックを回復するために使用するブロックである。フラッシュメモリで読取りエラーが発生した場合に消去演算を行ってから再使用可能な場合があるので、読取りエラーが発生したブロックを再使用するためにトランスファブロックを使用しうる。もし、読取りエラーを書込みエラー及び消去エラーと同一に取扱ってエラーブロックを予備ブロックに代える場合にトランスファブロック152は不要である。
ブロックマップページグループ150または158、トランスファブロック152及びパーティション情報ブロック156はエラーブロックでない正常ブロックに割当てられねばならない。現在商用化されたフラッシュメモリの消去演算可能回数は約10,000ないし100,000であり、フラッシュチップの総ブロック数は約10,000未満である。そして、フラッシュメモリの使用中に発生可能なエラーブロックの数はフラッシュチップの総ブロック数の数パーセントである。エラーブロックが発生する時、ブロックマップページグループ150または158、あるいはトランスファブロック152に消去演算を行えるが、この時、消去演算の総回数はフラッシュメモリで発生可能なエラーブロックの数と同じか、少ないと言える。このためにブロックマップページグループ150または158、あるいはトランスファブロック152のために割当てられたブロックがエラーブロックになる確率はきわめて小さく、したがってブロックマップページグループ150または158やトランスファブロック152あるいはパーティション情報ブロック156のエラーに対する対応としては最初にエラーブロックでない正常ブロックとして割り当てることだけで十分である。
図11は、全領域が非保護領域よりなる予備領域の構造を示すブロック図である。この際、nは0になり、mはフラッシュメモリを使用する間に発生してもフラッシュメモリの性能が保証される最大エラーブロックの数と同じである。
図12は、全領域が保護領域130よりなる予備領域120の構造を示すブロック図である。図12では使用領域110も保護領域130である。この際、mは0になり、nはフラッシュメモリを使用する間に発生してもフラッシュメモリの性能が保証される最大エラーブロックの数と同じである。
図13は、ブロックマップページグループ150または158構造の詳細ブロック図である。ブロックマップページグループはq個のブロックマップページ160で構成されており、各ブロックマップページ160はエラーブロック番号166とこれに代える予備ブロック番号167とで構成されるブロックマップフィールド161を予備ブロック154または155の数と同じm+n個を有する。すなわち、1つのブロックマップページ160はエラーブロックとこれに代える予備ブロックとのマッピング情報を何れも含む。また、ブロックマップページ160は最も最近に書込まれたブロックマップページを探すのに用いられるカウントフィールド163と、自体のブロックマップフィールド情報161が有効か、無効か、それとも使用されていないかを区別可能にするトランジションフィールド165も含む。最も最近に書込まれたブロックマップページ160はトランジションフィールド165に有効表示を有するブロックマップページ160のうちカウントフィールド163に最大数が書込まれたものであって、これを主メモリ、例えばRAMに書込んだものをブロックマップ情報170という。ブロックマップ情報170を通じたブロックマップページグループの更新は後述する。一方、本発明の望ましい実施例においてエラーブロック番号166と予備ブロック番号167とは何れも2バイトを有するが、これは現在商用化されたフラッシュメモリの総ブロック数は10,000未満である。したがって、2バイトは0ないし65535までの数を有しうるので、それ位ならば十分な量であるからである。また、発明の望ましい実施例においてカウントフィールド163は2バイトを有するが、現在商用化されたフラッシュメモリの総ブロック数は10,000未満であり、フラッシュメモリの使用中に発生可能なエラーブロックの数はフラッシュチップの総ブロック数の数パーセントである。したがって、2バイトは0ないし65,535までの数を有しうるので、それ位ならば十分な量であるからである。
図3の主メモリ400にあるフラッシュアプリケーションのうちに検証されたフラッシュアプリケーション412は使用領域110の特定の使用ブロックに接近するためにフラッシュ装置管理子420に半物理アドレスを送り、フラッシュ装置管理子420は半物理アドレスに合う物理アドレスを有するブロックを探す。この際、エラーブロックを使用しないようにするために最も最近のエラーブロック情報を含んでいるブロックページ160のブロックマップ情報170に登録されたブロックマップフィールド161のうち使用ブロック番号がエラーブロックナンバー166と一致すればこれに代える予備ブロック167を使用する。
図14は、フラッシュメモリに対するフラッシュ装置管理子の動作プロセスを示すフローチャートであり、図15及び図16は予備領域フォーマットプロセスをより詳細に示すフローチャートであり、図17ないし図19はブロックマップ情報のRAM常駐プロセスをより詳細に示すフローチャートであり、図20ないし図22はエラーブロック処理プロセスをより詳細に示すフローチャートである。
まずフラッシュメモリの全領域を読取り/書込み可能に設定(S90)した後、各チップを使用領域と予備領域とに分け、予備領域にブロックマップページグループを作るプロセス、すなわち予備領域をフォーマットするが(S100)、前記S90及びS100は最初の1回時にのみ必要なプロセスである。予備領域フォーマット(S100)の動作は図15及び図16を参照して説明する。
予備領域のフォーマット(S100)はフラッシュチップ番号tを0に初期化する(S110)。そして、チップt(t=0)の予備領域フォーマット(S130)を実行した後、最後のチップであるかを検査する(S170)。最後のチップでなければ、フラッシュチップ番号tを1増加させ(S120)、次のチップに対するフォーマットを実行する。そして、あらゆるチップに対するフォーマットが終了すれば、予備領域フォーマットが終了される。
チップtの予備領域をフォーマット(S130)するためには、まずチップの一定部分は使用領域として割り当て、一定領域はフラッシュメモリの使用中に発生するエラーブロックに対する対策としてチップtの予備領域に割り当てる(S132)。予備領域のために割り当てるべきブロックの数はフラッシュメモリの使用中に発生可能な最大のエラーブロックの数と発生するエラーブロックを管理するためのブロックの数との和として求められる。前者に割当てられたブロックは予備ブロックのグループであり、後者に割当てられたブロックはブロックマップページグループであって、トランスファブロック及びパーティション情報ブロックがこれに該当する。エラーブロックを管理するためのブロックの数は次のように割り当てられる。まずチップを保護領域と非保護領域とに分けて使用する場合に保護ブロックマップページグループと非保護ブロックマップページグループとのために各々2つのブロックを割り当て、チップを非保護領域だけで使用する場合には非保護ブロックマップページグループのための2つのブロックだけを割り当てる。各ブロックマップページグループに2つのブロックを割り当てる理由は後述する。
パーティション情報をチップに保存しようとする場合にはパーティション情報ブロックを1ブロック割り当てる。また、読取りエラーが発生したブロックを予備ブロックに代えず、再使用可能にするのに必要なトランスファブロックも1ブロックを割り当てる。これを表で整理すれば次の通りである。
Figure 0003923955
チップtの予備領域割当(S132)が終了すれば、チップtのブロックマップ情報を初期化する(S134)。各チップのブロックマップ情報は平常時には図1の主メモリ400に常駐するフラッシュ装置管理子に含まれた情報として原則的に各チップのブロックマップページグループに保存されている最も最近のブロックマップページと同じ情報を有する。まず、フラッシュメモリを使用する時はブロックマップ情報生成のためにブロックマップ情報を初期化しなければならない。チップtのブロックマップ情報の初期化(S134)はブロックマップ情報の大きさを決定し、各フィールドを特定値として初期化することを意味する。ブロックマップ情報の大きさは、トランジションフィールド165の大きさ+カウントフィールド163の大きさ+ブロックマップフィールド1つの大きさ*予備ブロックの数と決められる。各フィールドの初期値を見れば、トランジションフィールド165は有効表示を有し、カウントフィールド163は最初に記録されるブロックマップ情報という意味で1を有する。そして、ブロックマップフィールド161のエラーブロック番号166と予備ブロック番号167は次のように初期化する。エラーブロック番号166と予備ブロック番号167で表現できる最大値を各ブロックマップフィールド161のエラーブロック番号166と予備ブロック番号167に記録することによって、あらゆるブロックマップフィールド161を未使用ブロックマップフィールドに作る。本発明でエラーブロック番号166と予備ブロック番号167を記録するための空間の望ましい実施例は2バイトであるが、これは現在商用化されたフラッシュメモリの総ブロック数が10,000未満であるためである。すなわち、各ブロック番号166または167が有しうる最大値は65535であり、65535は未使用ブロックの数を示すのに十分である。
チップtのブロックマップ情報が初期化されれば(S134)、これに基づいてチップtのブロックマップ情報を生成する(S136)。ブロックマップ情報を生成しようとするならチップtで使用領域110の最下位アドレスから最上位アドレスまでエラーブロックの存在有無を検査する。エラーブロックが見つけられれば、チップtのブロックマップフィールドで未使用ブロックマップフィールドを探し、前記探した未使用ブロックマップフィールドのエラーブロック番号166と予備ブロック番号167に見つけられたエラーブロックとこれに代える予備ブロックの番号を書込む。未使用ブロックマップフィールドを探す時はブロックマップフィールド1 161からブロックマップフィールドm+n 161まで順次に検査して最初に見つけられた未使用ブロックマップフィールドを取ることが望ましい。
一方、フラッシュメモリを保護領域と非保護領域とに分けて使用する場合にそれぞれのブロックマップ情報(保護ブロックマップ情報と非保護ブロックマップ情報)を生成することもできるが、1つのブロックマップ情報として生成することもできる。もちろん保護領域と非保護領域とに分けても、ブロックマップページグループを1つに統合して使用する場合にはブロックマップ情報を1つに生成しうる。
最後に生成されたブロックマップ情報をチップtの予備領域のブロックマップページグループに記録する(S138)。記録方法はブロックマップページグループに属するあらゆるブロックに消去演算を行い、最下位アドレスのブロックマップページにチップtのブロックマップ情報を記録すれば良い。
予備領域フォーマットが完了されれば(S100)、ブロックマップ情報を主メモリに常駐させる(S200)。初めてフラッシュメモリを使用する場合でなければ、各チップのブロックマップ情報は最も最近に記録された各チップのブロックマップページと同じ情報を有するように各チップで最新のブロックマップページを検索して常駐させる(S200)。
ブロックマップ情報を主メモリに常駐させる方法は、図17ないし図19を参照して説明する。まずフラッシュチップ番号tを0に初期化させる(S210)。そして、チップtの最新ブロックマップ情報を主メモリに常駐させた後(S230)、該当チップが最後のチップであるか否かを検査し(S270)、最後のチップでなければ、フラッシュチップ番号tを1増加させる方式で最後のチップに対するブロックマップ情報を主メモリに常駐させるまで前記過程を繰り返す。
チップtのブロックマップ情報を主メモリに常駐させる過程(S230)を説明すれば、まずチップtのブロックマップ情報のカウントフィールドに0を記録し、カウントフィールドを初期化する(S232)。そしてチップtのブロックマップページグループから最初のブロックマップページを読取る(S234)。読取ったブロックマップページの有効性を検査し(S238)、有効なブロックマップページであれば、チップtのブロックマップ情報のカウントと読取ったブロックマップページのカウントとを比較する(S240)。チップtのブロックマップ情報のカウントが小さければ、読取ったブロックマップページの情報がチップtのブロックマップ情報よりさらに最近の情報ということを意味するので、ブロックマップページをチップtのブロックマップ情報にコピーして最近の情報に更新する(S242)。読取ったブロックマップページが最後のブロックマップページであれば(S244)、チップtのブロックマップ情報に保存された情報が最も最新のブロックマップページを含んでいるので主メモリに常駐させる。読取ったブロックマップページが最後のブロックマップページでなければ、さらに最新のブロックマップページの存否を探すためにチップtの次のブロックマップページを読取る(S236)。次いで、前記説明した過程を繰り返す。チップtの有効ブロックマップページであるか否かを検査する段階(S238)で有効ページでなければ、これを無視してチップtの次のブロックウェブページを読取って(S236)、前記説明した過程を繰り返す。読取りエラーを書込みエラーや消去エラーと別途に取扱うならば、読取りエラーを処理するためのプロセス(S246、S250、S260)が追加される。有効ブロックマップページ検査で(S238)、読取りエラー復旧中のマークが表示されたブロックマップページであれば(S246)、読取りエラーを復旧し(S250)、ブロックマップページに読取りエラー表示を無效化する(S260)。そして、再び次のブロックマップページを読取る(S236)。一方、有効ブロックマップページでもなく、読取りエラーでもない場合には有効でないブロックマップページであるために、次のブロックマップページを読取る。次のブロックマップページを読取り(S236)、再び前記S238からS244の過程を繰り返す。読取りエラーの復旧のより詳細な過程は図19を参照して説明する。まずチップtの読取りエラーブロックを消す(S252)。ブロックマップ情報を主メモリに常駐させる過程で見つけられる読取りエラーは、以前の読取りエラー復旧中を表示した段階以後に復旧作業中に突然に電源が遮断される場合に再び電源が入る時に見つけられる。読取りエラーブロックを消去した後(S252)、チップtのトランスファブロックを読取りエラーブロックにコピーし(s254)、チップtの前記見つけられたブロックマップページに無効マークを書込む(S256)。次いで、チップtの保護領域を読取り専用状態に変更する(S258)。
ブロックマップ情報が主メモリに常駐すれば(S200)、フラッシュメモリの保護領域を読取り専用に設定する(S280)。そして、フラッシュ演算可能な準備状態となる(S300)。図3の主メモリ400のフラッシュアプリケーション410は使用領域の特定アドレスをフラッシュ演算するためには、フラッシュ装置管理子に半物理アドレスを渡し、フラッシュ装置管理子は該当半物理アドレスに基づいて物理アドレスを生成する(S400)。物理的アドレスを探せば(S400)、フラッシュ演算を行う(S500)。フラッシュ演算途中でエラーブロックが見つけられれば該当半物理アドレスをエラーブロックでない、予備ブロックを使用できるようにマッピング情報を登録してエラーを修正する作業を行う(S600)。エラーブロックを処理する過程は、図20ないし図22を参照すれば次の通りである。もし、読取りエラーブロックを書込みまたは消去エラーブロックと異なって取扱うならば、チップtのエラーブロックが読取りエラーブロックであるか否かを検査し(S610)、読取りエラーブロックである場合にチップtの読取りエラーブロック処理(S620)を行い、そうでない場合には書込み/消去エラーブロック処理(S660)を行う。読取りエラーブロックを書込みまたは消去エラーブロックと同一に取扱う場合にはあらゆるエラーブロックに対してチップtの書込み/消去エラーブロック処理(S660)を行う。
まず図21を参照してチップtの読取りエラーブロック処理(S620)を見れば、まずチップtの保護領域を読取り/書込み状態に変更する(S622)。次いで、チップtのトランスファブロックを消去した(S624)後、チップtの読取りエラーブロックのエラーを訂正してチップtのトランスファブロックにコピーする(S626)。一定ビット以下のエラーに対してはエラー訂正コードでエラーを訂正しうる。この際、チップtの未使用ブロックマップページを探すが(S628)、もし未使用ブロックマップページがなければ、最も最新のブロックマップページが含まれたブロックでないブロックに消去演算を行う。そして、ブロックマップ情報のカウントフィールドに1を加算した後、前記消去されたブロックの最下位アドレスの未使用ブロックマップページに前記チップtのブロックマップ情報を記録し、前記ブロックマップページに有効マークを書込む。そして、前記ブロックマップページの上位ブロックマップページのうちから未使用ブロックマップページを探せる。前記見つけられたブロックマップページのトランジションフィールドを読取りエラー復旧中状態にしてブロックマップフィールド1のエラーブロック番号に読取りエラーブロック番号をブロックマップフィールド1の予備ブロック番号にトランスファブロック番号を記録し(S630)、前記見つけられたブロックマップページに有効マークを書込む(S632)。そして、チップtの読取りエラーブロックを消去した後(S634)、チップtのトランスファブロックを読取りエラーブロックにコピーし(S636)、チップtの前記見つけられたブロックマップページに無効マークを書込む(S638)。その際、チップtの保護領域を読取り専用状態に変更する(S640)。
読取りエラー復旧中を表示するS630段階はS632段階以後に復旧作業中突然に電源が遮断される場合に備えたものである。最後の無効マークを書き込むことは、既に読取りエラーブロックは以後には正常に使用できるために読取りエラーブロックがチェックされたブロックマップページを無効マークすることである。図18の有効ブロックマップページ検査で(S238)、読取りエラー復旧中マークが表示されたブロックマップページであれば(S246)、前記ブロックマップページのブロックマップフィールド1に含まれたエラーブロック番号166から読取りエラーブロック番号を得て前記S632、S634、S636、S638の段階を経て読取りエラーを復旧する。読取りエラーは主に保護領域で発生したことについて説明したが、もし非保護領域で読取りエラーが発生した場合にもS622及びS640を除いて残りの段階を同一に行って読取りエラーブロックを処理しうる。
次いで、図22を参照してチップtの書込み/消去エラーブロック処理(S660)でまずチップtの未使用予備ブロックを探す(S662)。未使用予備ブロックはチップtのブロックマップ情報を用いて探すことができ、それは次の通りである。
エラーブロックがチップtの保護領域で発生した場合、チップtのブロックマップ情報に登録されているブロックマップフィールドのうち既に発生したエラーブロックに対して予備ブロックがマッピングされているエラーブロック番号166を参照して未使用予備ブロックを探す。望ましい実施例において、既に発生したエラーブロックに対して予備ブロックがマッピングされている場合に最も大きい番号を有する予備ブロックから順次に未使用予備ブロックを探す。エラーブロックがチップtの非保護領域で発生した場合、チップtのブロックマップ情報に登録されているブロックマップフィールドのうち既に発生したエラーブロックに対して予備ブロックがマッピングされているエラーブロック番号166を参照して未使用予備ブロックを探す。望ましい実施例において既に発生したエラーブロックに対して予備ブロックがマッピングされている場合に最も大きい番号を有する予備ブロックから順次に未使用予備ブロックを探す。前記のような方式で未使用予備ブロックを探す場合には保護領域及び非保護領域の予備ブロックの数を予め割り当てずに発生するエラーブロックに合わせて使用しうる長所がある。
未使用予備ブロックを探せば(S662)、チップtのブロックマップ情報でチップtの未使用ブロックマップフィールドを探す(S664)。前記S662及びS664はブロックマップ情報に基づいて探す。次いで、ブロックマップ情報を更新する(S666)。ブロックマップ情報の更新はブロックマップ情報にある見つけられた予備ブロックをマッピングするように予備ブロックとエラーブロックとの番号を書込む。ブロックマップ情報を更新した後にブロックマップページグループで使用できるブロックマップページを探し(S668)、エラーブロックが保護領域に含まれているか否かを検査した後(S670)、エラーブロックが保護領域に含まれているならば、チップtの予備領域の保護領域を読取り/書込み状態に変更する(S672)。しかし、見つけられた未使用予備ブロックが読取り/書込み可能な非保護領域の予備ブロックである場合には前記S672段階は不要である。ここで、未使用ブロックマップページとは、最も最新の情報を含んでいるブロックマップページを除いたブロックマップページのうち何れか1つのブロックマップページを意味する。そして、チップtのエラーブロックを未使用チップtの予備ブロックにコピーする(S674)。次いで、チップtの未使用ブロックマップページにチップtのブロックマップ情報を書込み(S676)、チップtの未使用ブロックマップページに有効マークを書込む(S678)。最後に、チップtの予備領域の保護領域を読取り専用状態に変更する(S680)。エラーブロックを予備ブロックに代えたフラッシュメモリはエラーブロックが存在していないように使用できる。前記S668段階に用いられるブロックマップページを探す方法は、ブロックマップページのトランジションフィールドを使用して有効如何を判断し、有効なものうちカウントフィールドの数が最も大きなものをブロックマップページと判断する。S676段階で空いているブロックマップページにブロックマップ情報を記載するが、この際既存に保存されたブロックマップページのうち最も大きなカウントより1だけ大きいカウントをカウントフィールドに書込む。もし、空いているブロックマップページがなければ、他のブロックマップページを探して書込むが、そこも満ちている状態であれば、最新のブロックマップページのあるブロックでないブロックに対して消去演算をして記録すれば良い。
例えば、10個のブロックマップページを有しているAブロックとBブロックとがあるとしよう。ブロックマップページを使用する順序は最下位アドレスから最上位アドレスに使用するとする時、Aブロックのブロックマップページを全て使用した場合にはBブロックのブロックマップページを使用する。この際、それぞれのブロックマップページは生成当時のマッピング情報を有しているので、Aブロック及びBブロックは一種のマッピング情報ヒストリーブロックの役割をする。したがって、Aブロックを全て使用してBブロックの最後のブロックマップページまで使用した場合に新たなエラーブロックが発生すればAブロックを消し、そこに新しいマッピング情報を含むブロックマップページを作る。この時、もしシステムの誤作動や電源が遮断されても、少なくとも現在のマッピング情報を除いた最も最近のマッピング情報Bブロックに存在するので、フラッシュメモリを容易に使用しうる。今後、現在エラーブロックに対してフラッシュ演算をしようとすれば、その時エラーブロックに対して新たに予備ブロックをマッピングし、そのマッピング情報を含んでブロックマップページを作れば良い。
一方、ブロックマップページグループが1つのブロックよりなっていれば、空いているブロックマップページがない時、ブロックマップページグループを消し、再び最初から書込みできるが、もしブロックマップページを消す時、システムの誤動作や電源が切れる場合に既存のマッピング情報は消える。したがって、2つ以上のブロックを有することが望ましく、2つのブロックを有することが最も望ましい。
本発明が属する技術分野の当業者は本発明がその技術的思想や必須的な特徴を変更せず、他の具体的な形に実施されうるということを理解できるであろう。例えば、以上の実施例ではそれぞれのチップが全て予備領域を有することを中心に説明したが、本発明はこれに限定されず、予備領域を特定のチップに集中して設ける場合にも適用されうる。したがって、以上で記述した一実施例はあらゆる面で例示的なものであり、限定的でないものと理解せねばならない。本発明の範囲は発明の詳細な説明よりは特許請求の範囲により示され、特許請求の範囲の意味及び範囲、そしてその等価概念から導出されるあらゆる変更または変形された形態が本発明の範囲に含まれると解釈されねばならない。
本発明は、最小のフラッシュ演算でエラーブロックを管理し、かつ重要なデータを保護領域に設定して検証されていないアプリケーションによる悪意的なデータき損や誤動作によるデータき損を防止できる改善されたフラッシュメモリシステムに適用されうる。
従来の発明のフラッシュメモリシステムでエラーブロック管理の基本単位であるチャンクの構造を示すブロック図である。 図1に示されたチャンクマップのより詳細な構造を示すブロック図である。 本発明のシステム構成要素を簡略に示すブロック図である。 図3のシステムの動作を説明するためのブロック図である。 k+1個のフラッシュメモリチップに具現したフラッシュメモリのブロック図である。 t個の使用領域のパーティションと1つの予備領域パーティションとに分けられたフラッシュメモリの何れか1つのチップの構造を示すブロック図である。 非保護領域と保護領域を何れも含むフラッシュメモリの何れか1つのチップの構造を示すブロック図である。 あらゆる領域が非保護領域よりなるフラッシュメモリの何れか1つのチップの構造を示すブロック図である。 y個のブロックよりなる1つのパーティションの構造を示すブロック図である。 非保護領域と保護領域を何れも含む予備領域の構造を示すブロック図である。 全領域が非保護領域よりなる予備領域の構造を示すブロック図である。 全領域が保護領域よりなる予備領域の構造を示すブロック図である。 ブロックマップページグループの構造を詳細に示すブロック図である。 フラッシュメモリに対するフラッシュ装置管理子の動作プロセスを示すフローチャートである。 予備領域フォーマットプロセスをより詳細に示すフローチャートである。 予備領域フォーマットプロセスのうち何れか1つのチップの予備領域フォーマットプロセスをより詳細に示すフローチャートである。 ブロックマップ情報のRAM常駐プロセスをより詳細に示すフローチャートである。 何れか1つのチップに対するブロックマップ情報のRAM常駐プロセスをより詳細に示すフローチャートである。 エラー訂正コードでチップtの読取りエラーブロックを復旧する過程を詳細に示すフローチャートである。 エラーブロック処理プロセスをより詳細に示すフローチャートである。 読取りエラーブロック処理プロセスをより詳細に示すフローチャートである。 書込み/消去エラーブロック処理プロセスをより詳細に示すフローチャートである。
符号の説明
120 予備領域
130 保護領域
158 ブロックマップページグループ
155 予備ブロック
152 トランスファブロック

Claims (18)

  1. (a) フラッシュメモリに複数の使用ブロックを有する使用領域と複数の予備ブロックを有する予備領域とを割り当て、前記使用領域または前記予備領域で発生するエラーブロックとこれに代えて使用する予備ブロックとのマッピング情報を保存するブロックマップページを複数含むブロックマップページグループを提供する段階と、
    (b) 前記ブロックマップページグループのうち所定の規則により選択されたブロックマップページのマッピング情報をメモリに常駐させる段階と、
    (c) フラッシュ演算中に発生したエラーブロックを前記常駐マッピング情報を通じて探した未使用予備ブロックとマッピングし、前記常駐マッピング情報を更新して前記更新されたマッピング情報を前記ブロックマップページグループに属するブロックマップページに記録する段階と、を含み、
    前記(a)段階は、フラッシュメモリに複数の使用ブロックを有する使用領域と複数の予備ブロックを有する予備領域とを割り当てる(a1)段階と、
    前記生成された予備ブロックと発生するエラーブロックとのマッピング情報を記録するブロックマップフィールドを予備ブロック毎に生成し、前記生成されたブロックマップフィールド、マッピング情報の時点を判断するためのカウントフィールド、及び有効性判断のためのトランジションフィールドを含むブロックマップ情報を初期化させる(a2)段階と、
    フラッシュメモリに存在するエラーブロックを検査して見つけられたエラーブロック及び前記見つけられたエラーブロックに代える予備ブロックのマッピング情報を前記ブロックマップフィールドに各々記録し、前記カウントフィールドに初期カウントをしてブロックマップ情報を生成する(a3)段階と、
    前記ブロックマップ情報を前記ブロックマップページグループの何れか1つのブロックマップページに記録する(a4)段階と、を含むことを特徴とするフラッシュメモリのエラーブロック管理方法。
  2. 前記ブロックマップページグループは少なくとも2つの予備ブロックで構成されることを特徴とする請求項1に記載のフラッシュメモリのエラーブロック管理方法。
  3. 前記フラッシュメモリは複数のチップよりなり、各段階はそれぞれのチップ毎に行われることを特徴とする請求項1または2に記載のフラッシュメモリのエラーブロック管理方法。
  4. 前記(a)段階は、前記使用ブロック及び前記予備ブロックのうち少なくとも一部を保護領域に指定して検証されていないソフトウェアの接近を遮断することを特徴とする請求項1に記載のフラッシュメモリのエラーブロック管理方法。
  5. 前記(b)段階は、ブロックマップページグループ内のブロックマップページのうちから有効でありかつ最も最近に記録されたブロックマップページを検索し、検索されたブロックマップページのマッピング情報をメモリに常駐させることを特徴とする請求項1に記載のフラッシュメモリのエラーブロック管理方法。
  6. 前記有効でありかつ最も最近に記録されたブロックマップページを検索する時、それぞれのブロックマップページのトランジションフィールドに記録された値及びカウントフィールドに記録された数の大きさを基準として検索することを特徴とする請求項に記載のフラッシュメモリのエラーブロック管理方法。
  7. 前記ブロックマップページグループ内のブロックマップページのうちから有効でありかつ最も最近のブロックマップページを検索する過程で有効でなく、かつ読取りエラーが表示されたブロックマップページを見つける場合、前記見つけられた読取りエラーブロックを所定の方法で復旧する段階をさらに含むことを特徴とする請求項に記載のフラッシュメモリのエラーブロック管理方法。
  8. フラッシュメモリが複数のチップよりなる場合に各段階はチップ毎に行われることを特徴とする請求項ないしのうち何れか1項に記載のフラッシュメモリのエラーブロック管理方法。
  9. 前記(c)段階は前記常駐マッピング情報を用いて未使用予備ブロックを探す(c1)段階と、
    前記(c1)段階を通じて見つけられた未使用予備ブロックとエラーブロックとの番号をマッピングして前記常駐マッピング情報を更新する(c2)段階と、
    前記ブロックマップページグループの未使用ブロックマップページを探す(c3)段階と、
    前記発生したエラーブロックに記録された情報を前記見つけられた未使用予備ブロックに複写する(c4)段階と、
    前記更新されたマッピング情報を含む情報を前記見つけられた未使用ブロックマップページに記録する(c5)段階と、
    前記未使用ブロックマップページが有効であることを表示する(c6)段階と、を含むことを特徴とする請求項1に記載のフラッシュメモリのエラーブロック管理方法。
  10. 前記エラーブロックが保護領域で発生した場合に前記保護領域を読取り/書込み可能状態に変更し、前記(c6)段階が終わった後に前記保護領域を再び読取り専用状態に変更する段階をさらに含むことを特徴とする請求項に記載のフラッシュメモリのエラーブロック管理方法。
  11. フラッシュメモリが複数のチップよりなる場合に各段階はチップ毎に行われることを特徴とする請求項または10に記載のフラッシュメモリのエラーブロック管理方法。
  12. 前記(c)段階は、発生したエラーブロックが読取りエラーブロックであるか否かを判断する(c1)段階と、
    読取りエラーブロックを復旧するために臨時に使用する予備ブロックを消去する(c2)段階と、
    読取りエラーブロックのエラーを訂正して前記予備ブロックに複写する(c3)段階と、
    前記ブロックマップページグループのうち未使用ブロックマップページを探す(c4)段階と、
    前記見つけられたブロックマップページに前記読取りエラーブロックと前記予備ブロックとのマッピング情報及び読取りエラー復旧状態であることを表示する(c5)段階と、
    前記読取りエラーブロックを消去する(c6)段階と、
    前記予備ブロックを前記消去された読取りエラーブロックに複写する(c7)段階と、
    前記見つけられたブロックマップページに無効であることを表示する(c8)段階と、を含むことを特徴とする請求項1に記載のフラッシュメモリのエラーブロック管理方法。
  13. 前記読取りエラーブロックが保護領域で発生した場合に保護領域を読取り/書込み可能状態に変更し、前記(c8)段階が終わった後に前記保護領域を再び読取り専用状態に変更することを特徴とする請求項12に記載のフラッシュメモリのエラーブロック管理方法。
  14. 少なくとも1つ以上のフラッシュメモリチップよりなるフラッシュメモリのエラーブロック管理装置において、
    複数の使用ブロックを有する使用領域と使用中に発生するエラーブロックに代えるための複数の予備ブロックを有する予備領域とを有し、使用中に発生するエラーブロックとこれに代える予備ブロックとのマッピング情報を保存するブロックマップページを複数有しているブロックマップページグループを前記予備領域内に有しているフラッシュメモリと、
    前記ブロックマップページグループ内に存在する最近の有効なブロックマップページのマッピング情報と、エラーブロックの発生時にこれを処理するためのプロセスを定義するフラッシュ装置管理子をローディングするためのメモリと、
    前記フラッシュメモリとメモリに電気的に連結され、フラッシュ装置管理子のコードを読取ってフラッシュメモリに対するフラッシュ演算及びエラーブロック管理をする中央処理装置と、を含み、
    前記中央処理装置は、前記生成された予備ブロックと発生するエラーブロックとのマッピング情報を記録するブロックマップフィールドを予備ブロック毎に生成し、前記生成されたブロックマップフィールド、マッピング情報の時点を判断するためのカウントフィールド、及び有効性判断のためのトランジションフィールドを含むブロックマップ情報を初期化させ、
    フラッシュメモリに存在するエラーブロックを検査して見つけられたエラーブロック及び前記見つけられたエラーブロックに代える予備ブロックのマッピング情報を前記ブロックマップフィールドに各々記録し、前記カウントフィールドに初期カウントをしてブロックマップ情報を生成し、
    前記ブロックマップ情報を前記ブロックマップページグループの何れか1つのブロックマップページに記録することを特徴とするフラッシュメモリのエラーブロック管理装置。
  15. 前記ブロックマップページグループは少なくとも2つ以上の予備ブロックで構成されたことを特徴とする請求項14に記載のフラッシュメモリのエラーブロック管理装置。
  16. 前記中央処理装置とフラッシュメモリ間に電気的に連結されており、中央処理装置がフラッシュ演算を行う間にフラッシュメモリに次の演算のためのデータを保存しているバッファを2つ以上有しているフラッシュメモリコントローラをさらに含むことを特徴とする請求項14に記載のフラッシュメモリのエラーブロック管理装置。
  17. 前記フラッシュメモリコントローラは、フラッシュメモリの一定領域を保護領域に設定して前記フラッシュ装置管理子により検証されたフラッシュアプリケーションに対してのみ保護領域に対するフラッシュ演算を許容し、検証されていないフラッシュアプリケーションに対しては保護領域に対するフラッシュ演算を許容しないことを特徴とする請求項16に記載のフラッシュメモリのエラーブロック管理装置。
  18. 前記フラッシュメモリが複数のフラッシュメモリチップよりなる場合に前記フラッシュメモリの使用領域、予備領域と前記予備領域内のブロックマップページグループは各フラッシュメモリチップ毎に存在することを特徴とする請求項14に記載のフラッシュメモリのエラーブロック管理装置。
JP2004106984A 2003-04-04 2004-03-31 フラッシュメモリのエラーブロック管理方法及び装置 Expired - Fee Related JP3923955B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20030021502 2003-04-04
KR10-2003-0063342A KR100526186B1 (ko) 2003-04-04 2003-09-09 플래시 메모리의 오류블록 관리방법 및 장치

Publications (2)

Publication Number Publication Date
JP2004310770A JP2004310770A (ja) 2004-11-04
JP3923955B2 true JP3923955B2 (ja) 2007-06-06

Family

ID=36460795

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004106984A Expired - Fee Related JP3923955B2 (ja) 2003-04-04 2004-03-31 フラッシュメモリのエラーブロック管理方法及び装置

Country Status (6)

Country Link
US (2) US7009896B2 (ja)
EP (1) EP1469481B1 (ja)
JP (1) JP3923955B2 (ja)
KR (1) KR100526186B1 (ja)
CN (1) CN100407337C (ja)
DE (1) DE602004022608D1 (ja)

Families Citing this family (126)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6968439B2 (en) * 2002-08-29 2005-11-22 Micron Technology, Inc. Single segment data object management
US7203828B2 (en) * 2002-11-29 2007-04-10 Sigmatel, Inc. Use of NAND flash for hidden memory blocks to store an operating system program
KR100971320B1 (ko) * 2003-03-25 2010-07-20 트랜스퍼시픽 소닉, 엘엘씨 플래시롬의 응용 프로그램 저장/실행 방법
KR100572328B1 (ko) * 2004-07-16 2006-04-18 삼성전자주식회사 배드 블록 관리부를 포함하는 플래시 메모리 시스템
US20110029723A1 (en) * 2004-08-06 2011-02-03 Super Talent Electronics, Inc. Non-Volatile Memory Based Computer Systems
US7464306B1 (en) * 2004-08-27 2008-12-09 Lexar Media, Inc. Status of overall health of nonvolatile memory
TWI269167B (en) * 2005-05-04 2006-12-21 Apacer Technology Inc Dynamic memory management method and computer-readable recording medium for making a computer execute the method
TWI298836B (en) * 2005-10-12 2008-07-11 Sunplus Technology Co Ltd Apparatus for controlling flash memory and method thereof
ITVA20050061A1 (it) 2005-11-08 2007-05-09 St Microelectronics Srl Metodo di gestione di un dispositivo di memoria non volatile e relativa memoria
WO2007058617A1 (en) * 2005-11-17 2007-05-24 Chee Keng Chang A controller for non-volatile memories, and methods of operating the memory controller
CN100456263C (zh) * 2005-12-30 2009-01-28 深圳市桑达实业股份有限公司 在税控收款机中使用闪存时处理坏块的方法
US20070174549A1 (en) * 2006-01-24 2007-07-26 Yevgen Gyl Method for utilizing a memory interface to control partitioning of a memory module
US8065563B2 (en) * 2006-03-23 2011-11-22 Mediatek Inc. System for booting from a non-XIP memory utilizing a boot engine that does not have ECC capabilities during booting
US7555678B2 (en) * 2006-03-23 2009-06-30 Mediatek Inc. System for booting from a non-XIP memory utilizing a boot engine that does not have ECC capabilities during booting
US7721146B2 (en) * 2006-05-04 2010-05-18 Dell Products L.P. Method and system for bad block management in RAID arrays
KR100746418B1 (ko) * 2006-06-12 2007-08-03 주식회사 팬택앤큐리텔 이중화된 페이지 테이블 구조를 사용하는 휴대용 단말기 및그 휴대용 단말기에서의 파일 시스템 초기화 방법
US7366017B2 (en) * 2006-08-22 2008-04-29 Micron Technology, Inc. Method for modifying data more than once in a multi-level cell memory location within a memory array
KR100837273B1 (ko) * 2006-08-24 2008-06-12 삼성전자주식회사 플래시 메모리 장치
US20080052446A1 (en) * 2006-08-28 2008-02-28 Sandisk Il Ltd. Logical super block mapping for NAND flash memory
KR100755718B1 (ko) * 2006-09-04 2007-09-05 삼성전자주식회사 멀티 레벨 셀 플래시 메모리에서 런-타임 배드 블록 관리를위한 장치 및 방법
KR100845137B1 (ko) * 2006-10-02 2008-07-09 삼성전자주식회사 메모리 장치의 배드 블록 주소를 번역하는 방법, 메모리장치의 배드 블록 주소를 번역하는 장치 및 이를 포함하는메모리 장치 컨트롤러
KR100799688B1 (ko) * 2007-01-03 2008-02-01 삼성전자주식회사 백업 회로를 갖는 메모리 시스템 및 그것의 프로그램 방법
US8122319B2 (en) * 2007-01-24 2012-02-21 Charles I. Peddle Page-based failure management for flash memory
KR100813630B1 (ko) * 2007-02-07 2008-03-14 삼성전자주식회사 독출 성능을 향상할 수 있는 플래시 메모리 시스템 및그것의 독출 방법
US20080222733A1 (en) * 2007-03-08 2008-09-11 Ddtic Corporation, Ltd. Anti-pirate memory card
US7996710B2 (en) 2007-04-25 2011-08-09 Hewlett-Packard Development Company, L.P. Defect management for a semiconductor memory system
US7694093B2 (en) 2007-04-27 2010-04-06 Hewlett-Packard Development Company, L.P. Memory module and method for mirroring data by rank
KR100923989B1 (ko) * 2007-06-01 2009-10-28 삼성전자주식회사 배드 블록을 리맵핑하는 플래시 메모리 장치 및 그것의배드 블록의 리맵핑 방법
US7916540B2 (en) 2007-05-17 2011-03-29 Samsung Electronics Co., Ltd. Non-volatile memory devices and systems including bad blocks address re-mapped and methods of operating the same
TWI335035B (en) * 2007-06-20 2010-12-21 Etron Technology Inc Memory row scheme having memory row redundancy repair function
KR101399549B1 (ko) 2007-09-04 2014-05-28 삼성전자주식회사 반도체 메모리 장치 및 그것의 블록 관리 방법
US7817467B2 (en) 2007-09-07 2010-10-19 Micron Technology, Inc. Memory controller self-calibration for removing systemic influence
US8245101B2 (en) 2007-12-27 2012-08-14 Sandisk Enterprise Ip Llc Patrol function used in flash storage controller to detect data errors
TWI375953B (en) 2008-02-21 2012-11-01 Phison Electronics Corp Data reading method for flash memory, controller and system therof
JP4489127B2 (ja) * 2008-02-29 2010-06-23 株式会社東芝 半導体記憶装置
US8082384B2 (en) * 2008-03-26 2011-12-20 Microsoft Corporation Booting an electronic device using flash memory and a limited function memory controller
CN101546298B (zh) * 2008-03-28 2012-01-11 群联电子股份有限公司 用于闪存的数据读取方法、其控制器与储存***
US8156392B2 (en) * 2008-04-05 2012-04-10 Fusion-Io, Inc. Apparatus, system, and method for bad block remapping
DE102008041683A1 (de) 2008-08-29 2010-03-04 Robert Bosch Gmbh Verfahren und Vorrichtung zum Betreiben eines Rechners mit einem Speicher, Computerprogramm, Computerprogrammprodukt
TWI364661B (en) * 2008-09-25 2012-05-21 Silicon Motion Inc Access methods for a flash memory and memory devices
CN102203876B (zh) * 2008-09-30 2015-07-15 Lsi公司 用于存储器器件的软数据生成的方法和装置
US20100146239A1 (en) * 2008-12-08 2010-06-10 Infinite Memories Ltd. Continuous address space in non-volatile-memories (nvm) using efficient embedded management of array deficiencies
EP2270644A3 (en) * 2009-06-22 2012-10-17 Hitachi, Ltd. Method for managing storage system using flash memory, and computer
EP2317518B1 (en) * 2009-11-02 2011-10-12 Giga-Byte Technology Co., Ltd. Flash memory accessing apparatus and method thereof
KR101678868B1 (ko) * 2010-02-11 2016-11-23 삼성전자주식회사 플래시 주소 변환 장치 및 그 방법
CN101833488B (zh) * 2010-04-30 2012-09-26 杭州华三通信技术有限公司 快照资源的处理方法及设备
US8874981B2 (en) * 2010-05-12 2014-10-28 Mediatek Inc. Method of creating target storage layout table referenced for partitioning storage space of storage device and related electronic device and machine-readable medium
KR101280181B1 (ko) * 2010-05-18 2013-07-05 삼성전자주식회사 메모리 시스템 및 메모리 시스템에서 플래쉬 변환 레이어의 예비 영역 관리 방법
KR101077901B1 (ko) * 2010-07-12 2011-10-31 (주)이더블유비엠코리아 로그 블록 단위 매핑 기법을 이용한 플래시 메모리 관리 장치 및 방법
US8706954B2 (en) * 2010-09-07 2014-04-22 Sony Corporation Memory management apparatus and memory management method
US8656086B2 (en) * 2010-12-08 2014-02-18 Avocent Corporation System and method for autonomous NAND refresh
JP5541194B2 (ja) * 2011-02-23 2014-07-09 株式会社デンソー フラッシュメモリに対してデータの読み出しおよび書き込みを行う制御装置
US8560922B2 (en) 2011-03-04 2013-10-15 International Business Machines Corporation Bad block management for flash memory
US8726087B2 (en) * 2011-03-18 2014-05-13 Denso International America, Inc. System and method for curing a read inability state in a memory device
TWI541816B (zh) * 2011-06-20 2016-07-11 鑫創科技股份有限公司 行車記錄器、快閃記憶體裝置及其管理方法
US9529547B2 (en) * 2011-10-21 2016-12-27 Freescale Semiconductor, Inc. Memory device and method for organizing a homogeneous memory
US8892828B2 (en) * 2011-11-18 2014-11-18 Micron Technology, Inc. Apparatuses and methods for storing validity masks and operating apparatuses
TWI508068B (zh) * 2012-07-25 2015-11-11 Silicon Motion Inc 管理快閃記憶體中所儲存之資料的方法,及相關的記憶裝置與控制器
US9811414B2 (en) 2012-07-25 2017-11-07 Silicon Motion Inc. Method for managing data stored in flash memory and associated memory device and controller
US9699263B1 (en) 2012-08-17 2017-07-04 Sandisk Technologies Llc. Automatic read and write acceleration of data accessed by virtual machines
US9032244B2 (en) * 2012-11-16 2015-05-12 Microsoft Technology Licensing, Llc Memory segment remapping to address fragmentation
US9501398B2 (en) 2012-12-26 2016-11-22 Sandisk Technologies Llc Persistent storage device with NVRAM for staging writes
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
US9454420B1 (en) 2012-12-31 2016-09-27 Sandisk Technologies Llc Method and system of reading threshold voltage equalization
US9870830B1 (en) 2013-03-14 2018-01-16 Sandisk Technologies Llc Optimal multilevel sensing for reading data from a storage medium
US8812744B1 (en) 2013-03-14 2014-08-19 Microsoft Corporation Assigning priorities to data for hybrid drives
US9367246B2 (en) 2013-03-15 2016-06-14 Sandisk Technologies Inc. Performance optimization of data transfer for soft information generation
US9626126B2 (en) 2013-04-24 2017-04-18 Microsoft Technology Licensing, Llc Power saving mode hybrid drive access management
US9946495B2 (en) 2013-04-25 2018-04-17 Microsoft Technology Licensing, Llc Dirty data management for hybrid drives
US9524235B1 (en) 2013-07-25 2016-12-20 Sandisk Technologies Llc Local hash value generation in non-volatile data storage systems
US9639463B1 (en) 2013-08-26 2017-05-02 Sandisk Technologies Llc Heuristic aware garbage collection scheme in 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
US9442662B2 (en) 2013-10-18 2016-09-13 Sandisk Technologies Llc Device and method for managing die groups
US9436831B2 (en) 2013-10-30 2016-09-06 Sandisk Technologies Llc Secure erase in a memory device
KR102070729B1 (ko) * 2013-11-12 2020-03-02 삼성전자주식회사 반도체 메모리 장치 및 그것을 포함하는 메모리 시스템
US9703816B2 (en) 2013-11-19 2017-07-11 Sandisk Technologies Llc Method and system for forward reference logging in a persistent datastore
CN103593301B (zh) * 2013-11-20 2016-07-27 北京旋极信息技术股份有限公司 坏块管理方法及***
US9520197B2 (en) 2013-11-22 2016-12-13 Sandisk Technologies Llc Adaptive erase of a storage device
US9520162B2 (en) 2013-11-27 2016-12-13 Sandisk Technologies Llc DIMM device controller supervisor
US9582058B2 (en) 2013-11-29 2017-02-28 Sandisk Technologies Llc Power inrush management of storage devices
WO2015116141A1 (en) * 2014-01-31 2015-08-06 Hewlett-Packard Development Company, L.P. Identifying memory regions that contain remapped memory locations
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 串列反及式快閃記憶體及其內建可變式壞區的管理方法
US9448876B2 (en) 2014-03-19 2016-09-20 Sandisk Technologies Llc Fault detection and prediction in storage devices
US9454448B2 (en) 2014-03-19 2016-09-27 Sandisk Technologies Llc Fault testing in storage devices
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
US9390021B2 (en) 2014-03-31 2016-07-12 Sandisk Technologies Llc Efficient cache utilization in a 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
CN105023608B (zh) * 2014-04-29 2019-05-10 华邦电子股份有限公司 闪速存储器及坏区块的管理方法
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
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
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
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
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
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
US9652381B2 (en) 2014-06-19 2017-05-16 Sandisk Technologies Llc Sub-block garbage collection
US9811413B2 (en) 2014-07-30 2017-11-07 Apple Inc. Orphan block management in non-volatile memory devices
US9443601B2 (en) 2014-09-08 2016-09-13 Sandisk Technologies Llc Holdup capacitor energy harvesting
US9760482B2 (en) 2014-10-28 2017-09-12 Toshiba Memory Corporation Reconstruct drive for dynamic resizing
US11086797B2 (en) * 2014-10-31 2021-08-10 Hewlett Packard Enterprise Development Lp Systems and methods for restricting write access to non-volatile memory
KR102365269B1 (ko) 2015-04-13 2022-02-22 삼성전자주식회사 데이터 스토리지 및 그것의 동작 방법
US10346039B2 (en) * 2015-04-21 2019-07-09 Toshiba Memory Corporation Memory system
JP6542152B2 (ja) * 2016-03-29 2019-07-10 東芝メモリ株式会社 オブジェクトストレージ、コントローラおよびプログラム
US10146604B2 (en) * 2016-08-23 2018-12-04 Oracle International Corporation Bad block detection and predictive analytics in NAND flash storage devices
CN108170366A (zh) * 2016-12-06 2018-06-15 华为技术有限公司 存储设备中的存储介质管理方法、装置和存储设备
US10445199B2 (en) 2016-12-22 2019-10-15 Western Digital Technologies, Inc. Bad page management in storage devices
US10725933B2 (en) * 2016-12-30 2020-07-28 Intel Corporation Method and apparatus for redirecting memory access commands sent to unusable memory partitions
KR102409760B1 (ko) * 2017-03-17 2022-06-17 에스케이하이닉스 주식회사 메모리 시스템
KR102395434B1 (ko) 2017-03-20 2022-05-09 삼성전자주식회사 비휘발성 메모리 장치 및 이를 포함하는 메모리 시스템
US10936412B1 (en) * 2017-04-17 2021-03-02 EMC IP Holding Company LLC Method and system for accessing data stored in data cache with fault tolerance
US10223018B2 (en) 2017-04-19 2019-03-05 Sandisk Technologies Llc Bad page and bad block management in memory
US10453547B2 (en) * 2017-06-16 2019-10-22 Seagate Technologies Llc Monitoring a memory for retirement
US10635515B2 (en) 2017-12-06 2020-04-28 Sandisk Technologies Llc Recovery of partial memory die
US10838831B2 (en) * 2018-05-14 2020-11-17 Micron Technology, Inc. Die-scope proximity disturb and defect remapping scheme for non-volatile memory
US11055167B2 (en) * 2018-05-14 2021-07-06 Micron Technology, Inc. Channel-scope proximity disturb and defect remapping scheme for non-volatile memory
US10725853B2 (en) * 2019-01-02 2020-07-28 Formulus Black Corporation Systems and methods for memory failure prevention, management, and mitigation
KR20210039871A (ko) 2019-10-02 2021-04-12 삼성전자주식회사 메타 데이터를 관리하는 스토리지 시스템, 스토리지 시스템을 제어하는 호스트 시스템 및 스토리지 시스템의 동작방법
CN112861196A (zh) * 2019-11-27 2021-05-28 量子芯云(北京)微电子科技有限公司 安全存储器的存储单元使用寿命增强方法
CN113495675B (zh) 2020-04-01 2023-08-11 长鑫存储技术有限公司 读写方法及存储器装置
CN113495670B (zh) * 2020-04-01 2024-03-26 长鑫存储技术有限公司 读写方法及存储器装置
US11610641B2 (en) 2020-07-09 2023-03-21 SK Hynix Inc. Wafer-yields and write-QoS in flash-based solid state drives
CN114627932A (zh) * 2020-12-09 2022-06-14 南京长峰航天电子科技有限公司 一种nand flash存储芯片坏区检测管理方法
CN113377296B (zh) * 2021-08-16 2021-11-16 深圳市有为信息技术发展有限公司 车载终端NAND Flash的存储管理方法和***、车载终端、车辆
CN116880777B (zh) * 2023-09-07 2023-12-01 合肥康芯威存储技术有限公司 一种内嵌式存储器及闪存恢复方法

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5210854A (en) 1989-06-14 1993-05-11 Digital Equipment Corporation System for updating program stored in eeprom by storing new version into new location and updating second transfer vector to contain starting address of new version
JPH03273349A (ja) 1990-03-22 1991-12-04 Toshiba Corp アクセス制御方式
TW261687B (ja) * 1991-11-26 1995-11-01 Hitachi Seisakusyo Kk
JPH07201190A (ja) 1993-12-28 1995-08-04 Mitsubishi Electric Corp 不揮発性メモリファイルシステム
KR100205006B1 (ko) * 1996-10-08 1999-06-15 윤종용 자동 결함 블럭 맵핑 기능을 갖는 반도체 메모리 장치
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
US6260156B1 (en) * 1998-12-04 2001-07-10 Datalight, Inc. Method and system for managing bad areas in flash memory
JP2000285001A (ja) * 1999-03-31 2000-10-13 Seiko Epson Corp 半導体フラッシュメモリ装置及びその制御方法
JP3389186B2 (ja) * 1999-04-27 2003-03-24 松下電器産業株式会社 半導体メモリカード及び読み出し装置
JP2001350673A (ja) 2000-06-05 2001-12-21 Hitachi Ltd フラッシュメモリアクセス制御方法
KR100644602B1 (ko) * 2000-10-11 2006-11-10 삼성전자주식회사 플래시메모리를 위한 재사상 제어방법 및 그에 따른플래시 메모리의 구조
JP2002285001A (ja) 2001-03-22 2002-10-03 Nippon Zeon Co Ltd 吸水性消臭材およびその製造方法
JP2003044231A (ja) 2001-07-31 2003-02-14 Hitachi Communication Technologies Ltd 記憶媒体交替セクタ管理方式および記憶装置
JP4059473B2 (ja) 2001-08-09 2008-03-12 株式会社ルネサステクノロジ メモリカード及びメモリコントローラ
JP2003085993A (ja) * 2001-09-07 2003-03-20 Toshiba Corp 不揮発性半導体記憶装置およびその不良救済方法
US7171536B2 (en) * 2002-10-28 2007-01-30 Sandisk Corporation Unusable block management within a non-volatile memory system
TWI298836B (en) * 2005-10-12 2008-07-11 Sunplus Technology Co Ltd Apparatus for controlling flash memory and method thereof

Also Published As

Publication number Publication date
CN100407337C (zh) 2008-07-30
US20060109725A1 (en) 2006-05-25
US7009896B2 (en) 2006-03-07
EP1469481A2 (en) 2004-10-20
DE602004022608D1 (de) 2009-10-01
KR100526186B1 (ko) 2005-11-03
EP1469481B1 (en) 2009-08-19
CN1551243A (zh) 2004-12-01
KR20040087245A (ko) 2004-10-13
US20040196707A1 (en) 2004-10-07
EP1469481A3 (en) 2006-11-15
US7295479B2 (en) 2007-11-13
JP2004310770A (ja) 2004-11-04

Similar Documents

Publication Publication Date Title
JP3923955B2 (ja) フラッシュメモリのエラーブロック管理方法及び装置
JP3906825B2 (ja) 計算機システム、計算機システム起動方法およびプログラム
KR100843543B1 (ko) 플래시 메모리 장치를 포함하는 시스템 및 그것의 데이터복구 방법
US20100205363A1 (en) Memory device and wear leveling method thereof
JP5162535B2 (ja) メモリシステムを利用する方法及びメモリシステム
JP4991320B2 (ja) ホスト装置およびメモリシステム
US6381176B1 (en) Method of driving remapping in flash memory and flash memory architecture suitable therefor
TWI490694B (zh) 判定資料可得性之方法及系統,以及記憶體介面
JP3682256B2 (ja) ディスクアレイ装置及び同装置におけるパリティ処理方法
US20020085433A1 (en) Data management system and data management method
US20100318845A1 (en) Memory failure recovery method, information processing apparatus, and program
JP2009244962A (ja) メモリシステム
EP1607867B1 (en) Data management method for flash memory medium
US20130275692A1 (en) Storage device and methods thereof
JPH09198884A (ja) フラッシュメモリ管理方法
JP3793868B2 (ja) フラッシュメモリ管理装置及び記録媒体
TWI826236B (zh) 記憶體系統及控制方法
JP2008117299A (ja) 記憶媒体制御装置
JP2000305818A (ja) チップカードのメモリ断片化解消(デフラグ)
JP4332134B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP2010092113A (ja) 記憶装置、電子装置、および、データ管理方法
US11836033B2 (en) Information processing apparatus and control method for controlling information processing apparatus
JP4580724B2 (ja) 不揮発性メモリの制御方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060912

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060926

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061226

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070222

R150 Certificate of patent or registration of utility model

Ref document number: 3923955

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110302

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130302

Year of fee payment: 6

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140302

Year of fee payment: 7

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees