JP2007518166A - フラッシュメモリシステムの起動動作 - Google Patents

フラッシュメモリシステムの起動動作 Download PDF

Info

Publication number
JP2007518166A
JP2007518166A JP2006547272A JP2006547272A JP2007518166A JP 2007518166 A JP2007518166 A JP 2007518166A JP 2006547272 A JP2006547272 A JP 2006547272A JP 2006547272 A JP2006547272 A JP 2006547272A JP 2007518166 A JP2007518166 A JP 2007518166A
Authority
JP
Japan
Prior art keywords
firmware
copy
code
memory
flash memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2006547272A
Other languages
English (en)
Other versions
JP4933268B2 (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.)
SanDisk Corp
Original Assignee
SanDisk Corp
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 SanDisk Corp filed Critical SanDisk Corp
Publication of JP2007518166A publication Critical patent/JP2007518166A/ja
Application granted granted Critical
Publication of JP4933268B2 publication Critical patent/JP4933268B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/24Loading of the microprogram
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time

Abstract

不揮発メモリシステムの動作を制御するためのファームウエアコードの複数のコピーがメモリシステムのフラッシュメモリの適宜異なる位置に記憶される。これらの位置のアドレスマップもフラッシュメモリに記憶される。メモリシステムが初期化されると、アドレスマップを参照し、ファームウエアの1つのコピーをフラッシュメモリからコントローラメモリにロードするために、メモリコントローラに記憶されているブートコードがそのマイクロプロセッサによって実行され、その後、ユーザデータを記憶し、検索するためにメモリシステムを動作させるようにコピーがコントローラメモリからマイクロプロセッサによって実行されてもよい。データをチェックするために誤り訂正符号(ECC)が使用されるが、ECCを使用する必要性を少なくするため、フラッシュメモリに記憶されている2つ以上のファームウエアコピーの最良部分が使用される。ユーザデータが同じメモリに2つ以上の状態で記憶される場合には、ファームウエアコードが2つの状態でフラッシュメモリに記憶されてもよい。

Description

本発明は一般に、不揮発性フラッシュメモリシステムのコントローラの初期化に関し、特にメモリシステムの初期化またはリセットがなされた場合に、動作ファームウエアをフラッシュメモリに記憶し、かつ記憶されたファームウエアをコントローラメモリへと読み込む方法に関する。
今日、商業的に成功している多くの不揮発性メモリ製品が、特にフラッシュEEPROM(電気的に消去可能でプログラム可能な読み出し専用メモリ)セルのアレイを使用した小形形状のファクタカードの形式で使用されている。カードが接続されているホストとインターフェイスし、カード内のメモリアレイの動作を制御するために、カードにはメモリコントローラも含まれている。このようなコントローラは典型的に、マイクロプロセッサ、幾つかの不揮発性読み出し専用メモリ(ROM)、および揮発性ランダムアクセスメモリ(RAM)を含む。メモリカードという実装例の他に、1つまたは複数の集積回路の形式になったこの種のメモリシステムを様々な種類のホストシステムに代わりに組み込んでもよい。
2つの一般的なメモリセルアレイの構成、NORおよびNANDが市販されている。典型的なNORアレイでは、メモリセルは列方向に延びる隣接するビットラインのソース/ドレイン拡散層の間に接続され、コントロールゲートはセルの行に沿って延びるワードラインに接続されている。メモリセルはソースとドレインとの間のセルのチャネル領域の少なくとも一部の上方に配置された少なくとも1つの記憶素子を含む。このため、記憶素子にプログラムされる電荷レベルがセルの動作特性を左右し、よってアドレス指定されたメモリセルに適宜の電圧を印加するとセルを読み出すことができる。このようなセル、メモリシステムにおけるその使用、およびその製造方法の例が、米国特許第5,070,032号(特許文献1)、第5,095,344号(特許文献2)、第5,313,421号(特許文献3)、第5,315,541号(特許文献4)、第5,343,063号(特許文献5)、第5,661,053号(特許文献6)、および第6,222,762号(特許文献7)に記載されている。
NANDアレイは、個々のビットラインと基準電位との間に、1つまたは複数の選択トランジスタと共に接続された16または32などの2つ以上のメモリセルの直列ストリングを使用してセル列を形成する。ワードラインはこのような多数の列内のセルと交差して延びている。ストリング内の残りのセルをオン状態になりにくくすることによって、ストリングを流れる電流がアドレス指定されたセルに蓄積される電荷レベルに依存するように、プログラミング中に列内の各セルを読み出し、かつ検証する。メモリシステムの一部としてのNAND構成のアレイおよびその動作の例が、米国特許第5,570,315号(特許文献8)、第5,774,397号(特許文献9)、第6,046,935号(特許文献10)、および第6,522,580号(特許文献11)に記載されている。
前に参照した特許および論文に記載されている電流フラッシュEEPROMアレイの電荷蓄積素子は最も一般的な導電性フローティングゲートであり、典型的にはドープされたポリシリコン材料から形成される。フラッシュEEPROMシステムで有用な別の種類のメモリセルは、電荷を不揮発的に蓄積するために導電性フローティングゲートの変わりに非導電性誘電体材料を使用している。このようなセルは、チャンらの論文「真の単一トランジスタ酸化物−窒化物−酸化物EEPROMデバイス」,IEEE電子デバイスレターズ,EDL−8巻3号,1987年3月,93〜95ページ ("A True Single-Transistor Oxide-Nitride-Oxide EEPROM Device", IEEE Electron Device Letters, Vol. EDL-8, No. 3, March 1987, pp. 93-95) に記載されている。導電性コントロールゲートとメモリセルチャネル上の半導体基板の表面との間には酸化シリコン、窒化シリコンおよび酸化シリコン(「ONO」)から形成された3層誘電体が挟まれている。セルはセルチャネルから窒化シリコンへと電子を注入することによってプログラムされ、電子はそこにトラップされ、限定領域に蓄積され、また窒化シリコンに熱いホールを注入することによって消去される。誘電性蓄積素子を使用した幾つかの特定のセル構造が、2002年10月25日に出願された米国特許出願第10/280,352号(公開特許出願第2003−0109093号)(特許文献12)に記載されている。
集積回路を使用する場合のほとんどがそうであるが、フラッシュEEPROMメモリセルのアレイの場合も、ある種の集積回路機能を実装するために必要なシリコン基板の面積を縮小させるための圧力が存在する。所定サイズのメモリカードおよびその他の種類のパッケージの記憶容量を高めるために、または容量の増加とサイズの縮小化の双方のためには、シリコン基板の所定領域内に記憶可能なデジタルデータの量を増大することが絶えず望まれている。データの記憶密度を高める方法の1つは、メモリセルごとに、および/または蓄積素子ごとに1ビット以上のデータを記憶することである。これは蓄積素子の電荷レベル電圧範囲のウインドウを2つ以上の状態に区分することによって達成される。このような4つの状態を利用することによって、各々のセルは2ビットのデータを記憶することが可能になり、状態が8つになると蓄積素子ごとに3ビットのデータが記憶され、以下同様である。フローティングゲートを使用した多状態フラッシュEEPROM構造およびその動作が、米国特許第5,043,940号(特許文献13)および第5,172,338号(特許文献14)に記載され、また誘電フローティングゲートを使用した構造が、前に援用されている米国特許出願第10/280,352号(特許文献12)に記載されている。米国特許第5,930,167号(特許文献15)および第6,456,528号(特許文献16)に記載されているように、様々な理由から多状態メモリセルアレイの選択された部分を2つの状態(二進)で動作させてもよい。
典型的なフラッシュEEPROMアレイのメモリセル群は、同時に消去されるセル群からなる個別ブロックに区分される。すなわち、ブロックは消去単位である。各ブロックは典型的には単一または複数ページのデータを記憶し、ページはプログラミングと読み出しの最小単位であるが、1ページ以上を単一の動作でプログラムしたり、或いは読み出したりすることもできる。各ページは典型的に単数または複数のデータセクタを記憶し、セクタのサイズはホストシステムによって規定される。セクタの一例は、磁気ディスクドライブで確立された標準に従えば512バイトのユーザデータを含み、それに加えてユーザデータおよび/またはそれらが記憶されているブロックに関する幾つかのバイト数のオーバーヘッド情報を含む。メモリシステムは典型的に各ブロック内の16、32、またはそれ以上のページで構成され、各ページはホストのデータセクタを1つまたはごく少数記憶する。
フラッシュメモリシステム内のコントローラは典型的に、メモリアレイの動作およびアレイとホストシステムとの間のデータの流れを制御するために、ファームウエアの動作システムからの命令を実行するマイクロプロセッサを含む。ある市販の製品では、このファームウエアはコントローラの一部として、典型的には単数または複数のメモリセルアレイ集積回路チップである小形のフラッシュEEPROM内に記憶されている。フラッシュメモリを使用することによって再プログラミングによりファームウエアを容易に更新することができる。ファームウエアは典型的に、システムの電源投入またはリセット時にフラッシュメモリからコントローラRAMへと読み込まれる。ファームウエアをRAMへとロードするために、コントローラROMに記憶されている少量のブートコードがコントローラマイクロプロセッサによってまず実行される。次に、マイクロプロセッサはRAMからのファームウエアの命令を実行する。というのは、この種のメモリではフラッシュメモリよりも非常に速い読み出しが可能であるからである。RAMはもちろん揮発性であるが、電源が切れても電源回復後には、ファームウエアは再びフラッシュメモリからRAMへとロードされ、メモリシステムの動作が再開される。
このファームウエアのブートシステムは極めて良好に動作するが、フラッシュメモリを形成するにはチップ上にその他の回路を形成する場合とは異なる処理を用いなければならないので、コントローラ集積回路チップは高価である。したがって、製造コストを下げるには、ユーザデータを記憶するためにホストによるアクセスができないフラッシュメモリのセルアレイの指定ブロックにファームウエアを記憶することがこれまで示唆されてきた。システムの初期化がなされると、コントローラマイクロプロセッサはファームウエアをフラッシュメモリの指定ブロックからRAMへとロードするためにROMのブートコードを実行する。このようにすると、ファームウエアをロードするためにわずかなコードしかROMに記憶されないので、これらのフラッシュブロックに再プログラムすることによって、やはりほぼすべてのファームウエアを変更および更新することが可能になる。
米国特許第5,070,032号 米国特許第5,095,344号 米国特許第5,313,421号 米国特許第5,315,541号 米国特許第5,343,063号 米国特許第5,661,053号 米国特許第6,222,762号 米国特許第5,570,315号 米国特許第5,774,397号 米国特許第6,046,935号 米国特許第6,522,580号 米国特許出願第10/280,352号 米国特許第5,043,940号 米国特許第5,172,338号 米国特許第5,930,167号 米国特許第6,456,528号 米国特許第5,532,962号 米国特許第6,151,246号 米国特許出願第10/678,345号 チャンらの論文「真の単一トランジスタ酸化物−窒化物−酸化物EEPROMデバイス」,IEEE電子デバイスレターズ,EDL−8巻3号,1987年3月,93〜95ページ
コントローラRAMにロードされるファームウエアの完全性を保つことはもちろん極めて重要なことである。ロードされたファームウエアに僅か1ビットでもエラーがあれば、メモリシステムの動作に異常をきたし、まったく動作しなくなることさえある。このような異常動作または故障のその他の悪影響に加えて、ユーザデータがプログラミングまたは読み出しの際に破損したり、メモリから検索できなくなることさえある。ファームウエアまたはその別のコピーを再ロードすることによってエラーが事後修正された場合でも、修復不能な損傷がユーザデータに、或いはフラッシュメモリからそれを読み出す能力に既に生じていることがある。したがって、ファームウエアをフラッシュメモリの予備ブロックにプログラムする処理およびシステムの初期化時にそれをRAMに転送する間の双方で、フラッシュメモリの他のブロックにユーザデータをプログラムし、または記憶するマイクロプロセッサの動作を制御するファームウエアの完全性を高めるための手順が講じられる。
動作ファームウエアの2つ以上のコピーがフラッシュメモリ内の異なる位置に記憶される。これらの位置は固定される必要はない。むしろ、各システムの最終製造ステップの1つとして、ファームウエアがメモリにプログラムされる時点でファームウエアを記憶するために各カードまたは組み込まれたメモリシステムの最適な予備メモリセルブロックを選択することができる。ファームウエアのコピーが記憶されるブロックのアドレスを有するマップも、製造中にメモリの幾つかの指定ブロックの1つにプログラムされる。ROMのブートコードによって、コントローラマイクロプロセッサは、アドレスマップを発見するまでこれらの幾つかの指定ブロックを順次アドレス指定する。次に、マップはコントローラRAMへとコピーされ、ファームウエアの第1のコピーの始端が存在するフラッシュメモリブロックのアドレスがマイクロプロセッサによってマップから読み出され、次にそのアドレスによってブロックがアドレス指定され、第1のファームウエアコピーのRAM内へのコピーが開始される。プログラム可能なファームウエアアドレスマップを使用することによって、ROMブートコードまたはブート処理を複雑にすることなく、ファームウエアを異なるカードの異なるフラッシュメモリ位置に記憶することが可能になる。
通常のフラッシュメモリはユーザデータ用に複数の状態で動作されるが、ファームウエアを記憶するための予備ブロックは二進か、或いはユーザデータ用に使用される状態よりも少ない状態の数で動作されてもよい。すなわち、フラッシュメモリの大多数のメモリセルの記憶素子は2ビット以上のデータを記憶するが、予備ブロックの記憶素子は各々が記憶素子ごとに1ビット以上のデータという、より少ないビット数を記憶するように動作されてもよい。それによって異なる状態間のマージンが増し、ひいてはファームウエアのデータが障害、およびエラーを誘発することのあるその他の作用を受けにくくなる。このように信頼性が高まるのに加えて、より少ない状態数で記憶されたデータはより迅速に読み出し可能になる。それによって、予備ブロックに記憶されるデータ密度は低くなるが、比較的少ないブロックしか影響されない。したがって、通常はメモリシステムに及ぼす影響が全体として少なくなる。
ファームウエアデータは通常、公知の冗長コードアルゴリズムに基づいてデータから計算された誤り訂正符号(ECC)と共にフラッシュメモリに記憶される。ECCは典型的に、ファームウエアデータの各セクタまたはページと共に記憶される。ファームウエアデータがフラッシュメモリの予備ブロックからコントローラにアップロードされると、データはECCでエラーチェックされる。1ビット以上のセクタにエラーがある場合には、エラーのあるビット数が、使用しようとする特定のECCアルゴリズムの能力内であれば、セクタのECCを使用してエラーを修正してもよい。あるいは、フラッシュメモリに記憶されている1つ以上の代わりのコピーからセクタが読み出されてもよい。第1のコピー内のエラー数がECCアルゴリズムの修正能力を超えている場合には、セクタは必ず別のファームウエアコピーから読み出される。セクタの代替コピーの全てがエラーを含む場合には、エラーの少ないコピーが修正され、これを使用することができる。ECCの計算はROMブートコードの制御下でのコントローラマイクロプロセッサによってではなく、コントローラの一部として備えられるハードウエア回路によって行われることが好ましい。しかし、修正可能なデータエラーが検出されると、そのときはマイクロプロセッサがROMブートコードの命令の実行によるエラー修正に関わるようになる。
読み出し中にファームウエアデータビットのエラーが検出された場合にはマージニング技術を利用してもよい。すなわち、ECCを用いてエラーがあると判定された場合には、同じデータが異なる基準レベルで再び読み出されてもよい。すなわち、1ビット以上のファームウエアの記憶レベルの何らかのエラーにマージンを与えるのである。読み出されたマージンは通常、ECCが修正能力以上の数のエラーを検出するとき、これに応じて利用される。あるいは、読み出されたマージンは、ECCがエラーを検出した後であるが、それを修正するためにECCを用いる前に、利用されてもよい。いずれの場合も、ECCはマージンのついた読み出しデータの妥当性を検証するために使用される。この方法によって妥当なデータの読み出しができない場合には、ファームウエアの第2のコピーが読み出される。
ファームウエアコードのコピーが記憶されていることを示すため、フラッシュメモリの予備セクタに「ファームウエア存在」フラグが設定されてもよい。このとき、ブートコードは、ブートコードを含む領域がアドレス指定される前にフラグが読み出されるようにする。関連するファームウエアコピーの存在をフラグが表示していない場合には、コピーを読み出そうとする動作は実施されない。判断が行われる際にロードされないように、適切に記憶されたファームウエアには「Do Not Load(ロードしない)」フラグを使用してもよい。これらの2つのフラグの組み合わせで、マイクロプロセッサによるフラッシュメモリからのファームウエアの読み出し、およびロードを試行するか否かが制御される。
本発明のその他の態様、利点および特徴は、添付図面と関連させて考慮されるべきであるその代表的な実施形態についての以下の説明に含まれる。本願明細書において参照される全ての特許、特許出願、論文およびその他の刊行物は、全ての目的のためにその全体が参照により本願明細書において援用されている。
背景技術の欄で前に説明したフラッシュEEPROMシステムは機能的に図1のように表すことができる。不揮発性メモリシステム11は典型的に、不揮発メモリセルのアレイ13とコントローラ15の双方を含む。メモリセルアレイ13は背景技術で前に説明した種類のものでもよく、或いはその他の種類の再プログラム可能な不揮発性メモリでもよい。コントローラは、メモリセルアレイ13とインターフェイスする回路17、マイクロプロセッサ19、ランダムアクセスメモリ(RAM)21、読み出し専用メモリ(ROM)23、誤り訂正符号(ECC)計算回路25、およびホストインターフェイス回路27を備える。メモリシステム11はホストインターフェイス回路27を経てホスト29に接続されている。ホスト29はパーソナルコンピュータ、デジタルカメラ、携帯情報端末、携帯電話、デジタルオーディオプレーヤー、またはこのような不揮発性メモリシステムを必要とするその他の電子システムでよい。メモリシステム11はホスト内に組み込まれ、ひいてはホストシステムの一部をなしてもよく、或いはホストと電気的かつ機械的に出し入れ自在に接続されたカードの形式でもよい。
内部コントローラを備えるフラッシュメモリとして使用されるこのような出し入れ自在のカードには幾つかの既存の標準規格がある。このような標準規格の1つであるPCカード標準規格は3種類のPCカードの仕様を規定している。PCカード標準規格はパーソナルコンピュータメモリカード国際協会(PCMCIA)の製品である。コンパクットフラッシュ(登録商標)カード(CFカード)はPCカードと機能的に互換性があるが、ずっと小形である。さらに小形の不揮発性メモリカードは、マルチメディア(登録商標)カード(MMC)である。ほぼ同サイズのMMCの修正版は後のセキュアデジタル(SD)カードである。メモリカードとして使用するのに適したこれらの電子カード、またその他の電子カードには標準規格がある。これらの標準規格には、誰でも利用することができるものと、カードを利用するために設立された団体の会員が利用することができるものとがある。
動作時に、コントローラ11は、データがプログラムされる論理アドレスと共に、ホスト29からデータセクタを受信する。次に、コントローラはこれらのアドレスをメモリセルアレイ13内の物理的ページのアドレスへとマッピングする。アレイ13の物理的メモリマップの例が図2に示されている。メモリはブロック31などの幾つかのブロックに区分され、各ブロックは一回の消去動作の一部として同時に消去されるメモリセルの最小単位である。同様に、各ブロックは、ブロック31のページ33、35、37、および39などのメモリセルのページに区分されている。説明を簡略化するために、各ブロックに4ページだけがあるものとして示されているが、通常はずっと多くのページが使用される。各ページに複数のデータセクタを記憶し、より多くのページ数を有するようなより大きいブロックが趨勢となっている。
メモリセルアレイ13は、図2に示されているように、多数のブロックに区分されている。これらのブロックのうちの幾つかのブロックがアレイ13の動作を管理し、ホスト29と通信するためにコントローラ15によって使用されるファームウエア、パラメータ、およびその他のデータを記憶するための「予備ブロック」として指定されている。この例では、ブロック41、43、45、47、および49が予備ブロックであることが示されている。これらのブロックは同じメモリシステムの異なるコピーに対し同一である必要はなく、条件の変化によって望ましい場合には単一のメモリシステムの動作中にダイナミックに再指定されることも可能である。コントローラ15は予備ブロックへのホスト29によるアクセスを許容せず、コントローラは、むしろシステムを動作させるためにこれらのブロック内に記憶されたデータを利用する。システムの残りのブロックはコントローラ15がホスト29によって供給されるユーザデータを記憶するために利用可能であるが、場合によっては幾つかのブロックは通常の使用が抑えられ、必要になればシステムの動作中に他のブロックの代替となる余剰ブロックとして指定される。コントローラは、ユーザデータの記憶用に利用可能なアレイの物理的アドレス空間に論理アドレスをホストからマップする。
1ブロックの容量を超えるファームウエアは必ずしも物理的に隣接するブロックに記憶される必要はないが、コントローラによる動作ファームウエアの記憶および利用を説明するため、ファームウエアの第1のコピーが隣接する予備ブロック47と49に記憶されるものとして示されている。ファームウエアの第2のコピーは予備ブロック41と43とに記憶される。ファームウエア、および動作パラメータなどのコントローラによって使用されるその他のデータはメモリシステムの動作にとって極めて重要なので、これらは、メモリシステムの使用中に時間の経過とともに第1のコピーが破損する場合の保証として2つのコピーに記憶される。ファームウエアファイルによって占められるブロックの数はもちろん、ファイルのサイズとブロックのデータ記憶容量に左右される。
電源投入時またはハードリセットに応答して生ずるようなシステムの初期化中に、ファームウエアコードの1つのコピーがフラッシュメモリ13からコントローラのRAM21へとロードされる。次に、マイクロプロセッサ19がRAM21からのファームウエアコードを実行する。ファームウエアコードをロードする際にマイクロプロセッサ19に命令を発するために、ROM23内には少量のブートコードが備えられている。システムの初期化がなされると、マイクロプロセッサ19は1つのファームウエアコピーおよびその他の必要な動作データをフラッシュメモリ13の予備セクタからRAM21へとロードするためにブートコードの命令を読み出し、実行する。その後、マイクロプロセッサ19はメモリシステムの動作を制御するためにロードされたファームウエアコードの命令を実行する。通常の種類のROM23では、ブートコードは更新またはその他の変更が容易にはできず、さらにシステムコードの方は容易に再書き込み可能であるために、フラッシュメモリ13に記憶されたファームウエアコード内にはできるだけ多くのシステムコードが配される。
ブートコードにファームウエアのフラッシュメモリアドレスおよび動作データを持久的に含めるのではなく、ブートコードによってマイクロプロセッサがまずこの情報を含むマップを含むフラッシュメモリ内のより小さいファイルへアクセスすることができるようにする。この例では、マップはフラッシュメモリの1ページに記憶される。このマップを幾つかのページのいずれかに記憶することができるように、ブートコードによってマイクロプロセッサが幾つかの指定ページに順次アクセスし、マップを発見するまでこのページからデータを読み出すようにする。この例が図2に示され、ページ51、53、55、および57が指定されている。指定されたページは、この例では、アレイの異なる位置に物理的に分散された幾つかのブロックの第1のページ(ページ0)である。コントローラがマップを正確に読み出すことができることが重要であるので、アレイ内のある位置が他の位置よりも好ましいことが判明していれば、マップデータはより好ましい位置にプログラムされる。1または数ギガバイトのユーザデータ記憶容量を有するメモリシステムには、可能なページ数として、例えば10または12の潜在的マップページを指定することができる。
マップページの一例に記憶されるデータが図3に示されている。フィールド61はマップデータを格納するページを特定する一意的なシグネチャを含む。マイクロプロセッサがアクセスする必要のある幾つかの予備ファイル用のアドレスデータはマップページに含まれ、このような予備ファイル2つをファイル0および1とし、各ファイルのデータを図3に示す。各予備ファイルには、4つのデータフィールドが含まれる。予備ファイル0の場合、フィールド63はファイルの識別子(ID)を含む。これによってファームウエアファイルであることを示すことができる。フィールド65はページ数などのファイルの長さを特定する。予備ファイルの第1のコピーのフラッシュメモリ内のアドレスはフィールド67に特定され、第2のコピーのアドレスはフィールド69に特定される。これらのアドレスは一般に、ファイル長フィールド65によって示されている幾つかの連続ページに記憶されたファイルの第1のページのアドレスとなる。予備ファイル1に対する同じデータ、および少なくとも初期化処理時にコントローラによってアクセスされる必要がある他のいずれかのデータもマップ内に含まれる。
ファームウエアをコントローラにアップロードする第1の実施形態
図4の流れ図は、ファームウエアコードをフラッシュメモリ13からコントローラRAM21へとロードするためのメモリシステム11の初期化の例を示す。ステップ71で示されているように、システムの電源がオン状態にされるか、或いは電源が投入されたシステムでハードリセットがなされると、この処理が開始される。次のステップ73はコントローラの特定用途向け集積回路(ASIC)を初期化し、フラッシュメモリ13に電力を投入し、メモリビジー信号をホストに送る。次に、ステップ75で、ROM23内のブートコードが読み出され、マイクロプロセッサ19によって実行される。
ステップ75は、フラッシュメモリ内のマップページの位置を探し(図2を参照)、これを読み出した後、2つの1ビットフラグを含むようにマップ内で特定された予備ブロック内のファイルを読み出すステップを含む。これらのフラグの1つは「FW_Present(ファームウエア存在)」フラグであり、これはフラッシュメモリ内に記憶されたファームウエアコードがあるか否かを示す。フラッシュメモリに何もない場合には、このフラグによってコントローラはファームウエアコードを読み出す試行を回避することができる。第2の「Do Not Load」フラグは、ファームウエアがフラッシュメモリ内に存在する場合でも、ファームウエアをコントローラにロードしないことが望まれる場合に設定される。この第2のフラグは、例えばファームウエアコードなしで判断ルーチンが実行されている場合に設定される。しかし、このような動作が予測されない場合には、Do Not Loadフラグを使用する必要はない。これが使用される場合、別の選択肢として、フラグはレジスタまたはハードウエアフラグ内などのフラッシュメモリの外部に記憶されてもよい。双方のフラグが使用されるものと想定すると、次のステップ77はそれらのフラグがファームウエアの存在を示しているのか、また設定されたDo Not
Loadフラグが存在しないことを示しているかを判定する。そうである場合には、ステップ79で開始される手順はファームウエアのロードへと進む。そうではない場合には、ステップ101で示されているように、コントローラは、ホストが処理の制御に介入するオプションを伴ってアイドルループに入る。
予備セクタに2つのフラグを2ビットのデータとして記憶する代わりに、これらの2ビットを設定するためのパッケージの外部に2つのピンを指定してもよい。例えば、これらのピンのうちの1つが接地されている場合には、そのピンによって表されるフラグが設定される。このような場合、ステップ75および77の一部としてこれらのピンの電気的状態の問い合わせが行われる。
ステップ79で示されているように、ステップ75でマップページから読み出された2つのコピーのアドレスを組み合わせ、第1のコピーを読み出す準備をすることを含め、コントローラ自体がファームウエアを読み出すためのセットアップをする。特定のメモリアレイの読み出し中に用いられる様々な電圧レベルなどの公称の読み出し条件を、予備ブロックからFW_Presentフラグと同時に読み出すことができ(ステップ75)、さらにステップ79で読み出しセットアップのために利用することもできる。
ステップ81で、第1のファームウエアコピーの第1のページが読み出される。この例では、各ページが1つのデータセクタを記憶するので、流れ図では読み出しの単位として「セクタ」という用語が用いられる。個々のページが2つ、4つまたはそれ以上のデータセクタを記憶するようになっている場合には、ページ内のすべてのデータセクタが同時に読み出される。しかし、図4の流れ図に示されているように、依然として一度に1つのデータセクタが読み出されてもよい。
読み出されたファームウエアデータは、フラッシュメモリから読み出された各データと基本的には同じく、コントローラのECC回路25へと送られる。ECCは各データセクタから計算され、セクタの一部としてオーバーヘッドデータとして記憶されるECCと比較される。記憶されるECCはデータのプログラミング中にデータから計算される。エラー修正がセクタレベルで行われる限り、エラー修正は、各ページに記憶されているデータセクタが1つであるのか、或いは複数であるのかに関わらず行われる。あるいは、単一のページ内の複数のホストセクタのデータに単一のECCが使用される場合には、ECCのチェックはページごとに一回だけ行われる。一方で、各データセクタごとに2つのECCを含め、1つはファームウエアデータ部分用にし、もう1つはデータECCおよび/またはその他の動作パラメータを含むオーバーヘッド部分用にすることも通例である。さらに別な選択肢として、単数または複数のファームウエアセクタに関連するオーバーヘッドデータがファームウエアデータとは異なるページまたはブロックに記憶されてもよいが、読み出しは順次、また互いに関連して行われる。
記載されている特定の例では、ステップ83で、ECC回路25は読み出されたファームウエアからECCが計算されるようにし、またデータと共に読み出されたECCとの比較の結果として、ECCによってカバーされている読み出されたセクタまたはデータセクタの状態を示す数ビットの出力ビットを供給する。次に、ブートコードを実行するプロセッサ19は状態ビットが読み出されるようにする。読み出されたデータにエラーがないことを状態ビットが示す場合には、ステップ85で示されているように、次のページを読み出すためにページアドレスなどが更新される。ファームウエアファイルの第1のコピーを含む全てのページが未だ読み出されていない場合には、ステップは次のページを読み出すためにステップ79に戻る。しかし、最新に読み出されたページが第1のファームウエアファイルのうちの最後のページである場合には、ステップは以下のようにステップ95、97および99に進む。
しかし、ステップ83でECC回路25からの状態ビットが、読み出された1ビットまたは複数ビットにエラーがあることを示す場合には、次にステップ89でブートコードを実行することによって、可能ならば、コントローラ15がECCを使用してエラー(単数または複数)を修正することが可能であるか否かが判定される。これについては後に説明する。使用可能である場合には、ステップ91では、ブートコードを実行するマイクロプロセッサ19によって状態ビットから、使用される特定のエラー修正アルゴリズムによってエラーの数と種類が修正可能なものであるか否かが判定される。修正可能である場合には、読み出されたデータはステップ93でブートコードを実行することによって修正され、ステップはデータがエラーなく読み出された場合と同様にステップ85に進む。しかし、ECC回路25によって生成された状態ビットから、ブートコードに含まれているエラー修正アルゴリズムを使用してもエラーが修正不能であることが判定された場合には、次にステップ105で次の順番のファームウエアコピーが特定される。典型的なECCアルゴリズムは複雑さに応じた所定数のビットエラーを特定可能であるが、修正可能なのはそれよりも少ない数のビットである。例えば、ファームウエアファイルの第1のコピー0のセクタデータが修正不能である場合には、次にファームウエアファイルの第2のコピー1の同じセクタが変わりに読み出され、使用される。ステップ107は読み出されていないファームウエアデータのコピーが残っているか否かを判定し、残っている場合には、ステップをステップ81まで戻してファームウエアの第2のコピーの同じセクタで前述したステップの繰り返しをさせる。しかし、ファームウエアコードの双方の(またはある場合にはそれ以上の)コピーからそのセクタの読み出しが成功しなかった場合には、後述するようにステップ109に進む。
しかし、まずステップ89に戻り、初期状態では通常のことであるが修正が可能ではなかった場合には、次のステップ103はECCエラーの存在を示すフラグを設定させる。次に、次のコピーの同じセクタがステップ105、107、81およびその先によって前述したループ内で読み出される。ステップ103によって設定されたフラグは、1つまたは複数のビットエラーを含むファームウエアコピーのセクタと関連し、そのデータセクタに対する何らかの補修措置を講ずるため後に参照されるように、好ましくはセクタのオーバーヘッドの一部として、または他のどこかに記憶される。ファームウエアはアップロード処理中に設定されたこのような全てのフラグを探索するルーチンを含むことができるので、ファームウエアがコントローラに成功裏にロードされた後、フラッシュメモリに記憶されたエラーのあるファームウエアのデータセクタを直接修正するか、或いはエラーのあるデータの考えられる原因に対処する何らかの措置を講じてもよい。例えば、データを修正し、次に修正済みのデータを同じフラッシュメモリのページに再書き込みすることによって、フラグが設定されているファームウエアのデータセクタをその時点でスクラブまたは更新してもよい。幾つかの特定のスクラブ処理は、例えば米国特許第5,532,962号(特許文献17)、第6,151,246号(特許文献18)、および第6,222,762号(特許文献7)、および2003年10月3日に出願された米国特許出願第10/678,345号(特許文献19)に記載されている。セクタのデータはセクタデータEECを使用して、或いはプログラムされた状態の元の狭い範囲から移動して(または他の電荷蓄積素子とのフィールド結合により移動したと思われる)記憶された電荷レベルを補償するために、通常使用されているレベルとは異なる基準レベルで読み出す(「マージン読み出し」)ことによって修正してもよい。あるいは、ファームウエアの別のコピーから未修正のエラーのあるデータセクタを読み出し、かつ修正されたコピーに挿入してもよい。次に、修正済みのコピーがフラッシュメモリに、好ましくは新たな位置に再書き込みされるが、消去後に同じ位置に再書き込みされてもよい。
再びステップ89に戻ると、この例では、最初は読み出されたエラーのあるデータの修正は不能にされる。1つのコピーからエラーのあるデータを修正するのではなく、フラッシュメモリに記憶されたエラーのないいずれかのコピーから特定のデータセクタを読み出すことが不可能であると判定されるまで、まず同じセクタが次のファームウエアコピーから順次読み出される。この判定は、所定のセクタを全てのファームウエアコピーからエラーなく読み出す試行が失敗した後にステップ107によって行われる。ループはステップ109、111、112、およびステップ81に戻る113を含むが、次にセクタデータがエラーなく読み出され、ひいてはステップがステップ83からステップ85まで進むまで、セクタがファームウエアコピーから指定回数だけ一度に1つずつ順次再読み出しされるようなステップとなっている。ステップ112で示されているように、異なるマージン条件下で何回かの再試行を行ってもよい。
しかし、ステップ113での判定の結果、許容される再試行回数の最後の試行の後でこれが成功しなかった場合には、ステップ115でECC修正を可能にし、これによって、同じセクタの次の読み出し後にエラー修正を行うことが可能になる。このため、修正可能なECCエラーが存在することがステップ83で判定された場合、ステップは前述したようにステップ89によってステップ91および93の経路を経るように指示される。修正不能のECCエラーが存在する場合には、ステップ105および107を経てデータセクタの次のコピーで同じことが再び試みられる。しかし、ファームウエアデータセクタの全てのコピーでECC修正を伴う読み出しが失敗した場合には、ステップ111で、ステップはステップ101で示されているアイドルループ状態に置かれる。
要約すると、この実装例の場合、2つのファームウエアコピーがフラッシュメモリに記憶されると、双方のコピーにエラーがある所定のデータセクタはECCでデータを修正する試みをすることなく、ステップ109で設定された再試行の設定回数によって決められた回数まで各々読み出すことができる。その後、ECCでデータを修正することができるようにしつつ、各コピーからの所定のセクタの読み出しの最後の再試行を実施する。どのデータセクタも修正不能である場合だけ、ステップは失敗となる。
通常は好ましくはないが、別の選択肢としてステップ89を常に修正可能に設定することができるが、同時にセクタ内のデータエラーに後で対処するためにステップ103でフラグが設定される。このような場合には、図4のステップは所定のデータセクタを各ファームウエアコピーから一度だけ読み出す。第1のコピーが読み出され、そのエラーはECCによる修正が試みられる。成功すれば、ステップ85に達する。成功しない場合には、第2のファームウエアコピーの所定のセクタが読み出され、エラーがある場合には修正が試みられる。これらの双方とも成功しない場合には、ステップはステップ109に進む。
図4には特に示されていないが、マップページおよび予備ブロックのいずれかの部分を読み出すステップ75は、好ましくは、ファームウエアコピーについて記載したのと同様に実行される。すなわち、1つまたは複数のECCがこのようなデータと共に記憶され、読み出し中に、読み出されたデータがビットエラーを含むか否かを判定するために使用される。エラーを含む場合には、また修正可能である場合には、ECCを使用してデータを修正してもよい。修正不能である場合には、データは場合によっては異なる読み出し条件で再読み出しされる。依然としてエラーがある場合には、再読み出しされたデータにECCを使用してもよい。いったん修正されると、エラーのあるマップページおよび/または予備ブロック部分は通常、フラッシュメモリ内の異なる位置に再書き込みされる。1つのコピーから良好なデータを得ることができない場合には、マップページのコピーの控えを保存してもよい。
図5を参照すると、図4に関連して記載されているステップの一部による、フラッシュメモリに記憶された双方のコピーからのファームウエアの読み出しの成功例が概念的に示されている。説明を簡略化するために、ファームウエアが8セクタの長さであると想定すると、コントローラRAM21に読み込まれるファームウエアファイル121の8つのセクタが双方のファームウエアコピー123および125から取り出されることが示されている。セクタ0、1、2、4、5、および7は第1のファームウエアファイル123から来るが、セクタ3と6は第1のコピーから成功裏に読み出されることができなかったので、第2のファームウエアファイル125から取り出される。
図4のステップの流れ図、特にステップ87に戻ると、図5のファイル121などのファームウエアファイルの読み出しが終わると、ステップはステップ95に進む。ステップ95の一部として、読み出されたファームウエアファイルのオーバーヘッドフィールド127および129(図5)がチェックされる。ブートコードは異なるメモリシステムで時間の経過と共に変更可能であるので、これらのフィールドの各々はファームウエアファイルの長さと、ROM23に記憶されたブートコードのバージョン名の双方を含む。読み出されたファイル121の実際の長さがフィールド127および129から読み出された値と比較される。ROMのブートコード・バージョンのフィールド127および129から読み出された名称もブートコード自体に含まれるバージョン名と比較される。ステップ97で、これらの長さおよびブートコード名の比較の結果、双方とも是であると判定されると、ファームウエアファイル121(図5)がコントローラRAM21(図1)にアップロードされ、ステップは完了する。しかし、ファームウエアファイルの長さまたはブートコードのバージョン名のどちらかの比較結果が否である場合には、ステップ101で示されているように、ステップはホストから何らかの別の命令を受けるまで停止する。
フラッシュメモリにファームウエアをダウンロード
図6は、図1および2のメモリシステム11のフラッシュメモリ13の予備セクタにファームウエアをプログラムする処理を示す。これは、通常コンピュータの形態のホストシステム29を介して、典型的にはメモリシステムのメーカーによって製造の最終段階中、または以前製造されたカードのファームウエアの更新時に行われる。メモリシステムの購入者およびユーザは通常、ファームウエアコードをフラッシュメモリにロードすることはない。
図6を参照すると、ステップ131はダウンロード処理の開始を示している。ステップ133の間、ファームウエアデータを記憶する予備ブロックの候補である様々なフラッシュメモリブロックへとデータの異なる部分が書き込まれ、またそこから読み出される。このテストの結果、図2の一対のブロック41、43および47、49などの1つまたは複数のブロックのファームウエアコード記憶領域が各々選択される。プログラムされたテストデータをエラーなく読み出しすることができたブロックだけが選択される。さらに、記憶された電荷レベルが最適な範囲内にあるか否かを判定するために、記憶されたテストデータに補足的にテストを実施することもできる。さらに、テストデータのプログラミング後に、メモリシステムを様々な環境的ルーチンに置いて、記憶されたデータがその結果変化するか否かを判定することができる。
次のステップ135で、ホストコンピュータはダウンロードファームウエアをコントローラRAM21にロードして、メモリ制御ファームウエアをフラッシュメモリ13(図1および2)の選択された予備ブロックに書き込む命令を出す。次に、ステップ137で、フラッシュメモリにプログラムされる予定のファームウエアの一部として記憶されたROMブートコードの互換性表示と、ROM23に記憶されたブートコードのバージョン表示がホストによって読み出され、比較される。メモリシステム制御ファームウエアのダウンロードは、永久的にかつ再書き込み不能にROM23に記憶されたブートコードとの互換性がある場合だけ進行する。非互換性が認められた場合には通常、フラッシュメモリにロードされるシステムファームウエアコードのバージョンを既存のROMブートコードと互換性があるバージョンに変更することで修復が行われる。
次に、ステップ139で、ホストは、ファームウエア書き込みコマンドをコントローラ15に送り、コントローラ15はステップ141でFW_Presentフラグをクリアすることでまず応答する。このフラグについては前述したとおりである。次に、ステップ143でファームウエアデータセクタ群がホストによってメモリシステムに伝送される。ステップ145で示されているように、ファームウエアコードを記憶するためにステップ133によって選択された2つの予備ブロック領域の1つが、ファームウエアコードの第1のコピーの受信用に指定される。次に、コントローラ15はステップ147で示されているように、ホストから既に受信したファームウエアデータセクタを第1の選択された予備ブロック(単数または複数)へとプログラムする。ステップ149による判定でこのプログラムするステップが成功した場合には、コントローラは同じファームウエアデータセクタが第2の選択された予備ブロック(単数または複数)にプログラムされるようにする。ステップ151、153、および145を含む部分ループは第2の位置がアドレス指定されるようにし、同じデータセクタがステップ147によってそこにプログラムされる。
このデータセクタ群がフラッシュメモリの双方の位置にプログラムされると、ステップはステップ155に進み、プログラムされる必要のあるファームウエアのデータセクタがそれ以上あるか否かが判定される。ある場合には、ステップ143でホストによって別のデータセクタ群が送られ、これらは、ステップ145〜153が含まれているループを通じて同様にフラッシュメモリの双方の位置にプログラムされる。全てのファームウエアコードセクタがこのようにしてプログラムされたことがステップ155により判定された後、ステップ157で示されているように、FW_Presentフラグが設定され、ステップ159でダウンロード動作が完了する。
ステップ149で、セクタ群のプログラミングエラーが検出された場合には、ステップ147でのこれらのセクタのプログラミングは、ステップ161および163で示されているように、プリセットされた回数だけ繰り返される。その回数の試行でどのセクタ群のプログラミングの成功も達成されない場合には、ステップ165でプログラミング動作のエラーが記録され、ステップは終了する。
フラッシュメモリは背景技術の欄で前に説明したように電荷蓄積素子ごとに1ビット以上のデータを記憶するために多状態で動作されるが、電荷蓄積素子ごとにそれより少ない単数または複数のビット数のデータを記憶するように多状態システムの予備ブロックは動作可能である。例えば、電荷蓄積素子がユーザデータ用に8つの状態で動作される場合には、データは電荷蓄積素子ごとに4つの状態で予備ブロックに記憶されてもよい。同様に、ユーザデータが4つの状態で記憶される場合には、予備ブロックのデータは二進で記憶されることができる。このことは、メモリマップとファームウエアとを記憶する予備ブロックにとって特に有用である。より少数の状態が用いられる場合には各状態を定義する範囲が大きくなるので、より少数の状態で記憶されるデータは読み出しエラーが生じにくくなる。より少ない状態が各電荷蓄積素子に記憶される場合には、メモリトランジスタのしきい値電圧と電荷蓄積レベルとの範囲のマージンが高まり、範囲は大きくなる。もちろん、より少数の状態で動作されるこれらのブロックに記憶されるデータ量は少なくなるが、前述したメモリマップ、動作パラメータ、フラグおよびファームウエアを記憶する予備ブロックのこのような動作は、より少数の状態でメモリのわずかな部分しか動作する必要がないので、メモリの記憶容量にはさしたる影響を及ぼさない。
図7は、新規のブランクカードおよびファームウエアが更新されるカードの双方向けに、このようなシステムのメーカーがメモリカードの形式でファームウエアデータをフラッシュメモリシステムにプログラムする全体的な処理を示す。この処理には、ステップ165での図4のファームウエアのアップロード、およびステップ167での図6のファームウエアのダウンロードの双方を利用することが含まれている。最初にステップ169および171でカードがホストに接続されて、メモリカードが空白であるか否かが判定される。空白である場合には、ステップ173および175でメモリアレイがフォーマットされる。次に、図6に関連して前述したように、ファームウエアのコピーがカードのメモリアレイにプログラムされる。ステップ177でファームウエアが成功裏にカードにプログラムされたことが判定されると、処理は終了する。そこでカードは使用可能になる。
ステップ171でカードが空白ではないと判定されると、図4に関連して前述したように、フラッシュメモリに置かれたファームウエアがコントローラRAMにロードされる。ステップ179でファームウエアのアップロードが失敗したことが判定されると、不具合の原因を判明するために原因分析機能181が実施される。図4では、処理がアイドルループ101に入ると不具合が存在するとみなされている。それに応じて、カードは破棄される。
しかし、ステップ179でファームウエアが適正にアップロードされたことが判定された場合には、カードの再フォーマットが必要であるのか(ステップ183)、或いはファームウエアのより新しいバージョンへのアップグレードが必要であるのか(ステップ185)のいずれかが判定されると、ファームウエアをステップ167の処理で再書き込みしてもよい。しかし、再フォーマットもファームウエアのアップグレードも必要ない場合には、ファームウエアがフラッシュメモリからコントローラRAMに適正にロードされたことの確認により、処理は終了する。その時点でカードが使用可能であることが確認されたことになる。
ファームウエアをコントローラにアップロードする第2の実施形態
図8は、ROMブートコードによって制御し、フラッシュメモリ13からコントローラ15のRAM21(図1)にファームウエアをアップロードする処理の第2の実施形態を示す。この処理は、図4に関連して前述した第1の実施形態と同様である。図4と同一であるか、或いは基本的に同一の図8のステップには同じ参照番号が付され、ここではこれ以上説明しない。2つの実施形態の差異は、読み出されたデータにエラーがあるとの判定に対する応答にある。
図8を参照すると、この実施形態のステップは、ECCを使用してデータエラーが検出されたというステップ83での判定に応答し、前述したように後で使用するためにステップ103でフラグを設定するステップに直接進む。次のステップ191で、使用されるECCによってエラーが修正可能であるか否か、およびエラーが指定のビット数より少ないビット数(Nビット未満)を含むか否かが判定される。そうである場合には、データはステップ193でECCによって修正され、ステップはファームウエアデータの次のセクタの読み出しを継続する。この実施形態では、修正されるビット数が少なく、ECCが修正可能な読み出されたセクタのビット数未満である場合に限り、エラーのあるデータはステップのこのような初期段階で修正される。というのは、データの修正には修正されるビット数に関連する処理時間量がかかるからである。
したがって、ステップ191で修正不能であるか、或いは修正可能ではあるが、修正されるのがNビット以上であると判定されると、次のステップ195がそのどちらであるのかを判定する。N以上のエラービットを修正可能である場合には、ステップ197がフラッシュメモリに記憶された1つまたは複数の他のファームウエアコピーから所定のセクタが読み出されたか否かを判定する。そうである場合には、ステップ193でECCを用いてデータが修正され、ステップはステップ85を経て次の読み出されるデータセクタに進む。所定のセクタが未だ読み出されていないファームウエアコピーが残っている場合には、ステップ199は切り換わってステップ81が他のコピーを読み出すようにする。
しかし、ステップ197でN以上のエラービットの修正が不能であると判定された場合には、ステップ201を利用して、所定のセクタが全てのファームウエアコピーから通常通り指定回数読み出されたかを判定することができる。否である場合には、ステップ199は別のファームウエアコピー内の所定のセクタをアドレス指定し、それがステップ81で読み出される。全てのファームウエアコピーが既に指定回数だけ読み出されている場合には、データを読み出すために特別の努力が払われる。通常の読み出しの指定回数は2、3またはそれ以上にすることができるが、データの再読み出しには時間がかかり、同じ条件下で同じデータセクタを再度読み出しても、最初の読み出しによって所定の修正不能のエラーデータがあった後では適正なデータが得られる公算は高くはない。したがって、各ファームウエアコピーの指定の読み出し回数が1回として処理を実施することができ、その後、いずれも成功しない場合には特別の読み出しステップが講じられる。
特別の読み出し処理での最初のステップ203は、所定のファームウエアコピーから所定のデータセクタを読み出す1回以上の指定回数の試行が既に行われたか否かを判定することである。否である場合には、ステップ211によって特別の読み出しパラメータが設定され、セクタはステップ81でこれらの異なるパラメータで再び読み出される。しかし、特別の読み出しパラメータで1回以上の指定回数だけ所定のデータセクタが読み出されても成功しない場合には、ステップ205はフラッシュメモリに記憶された他のファームウエアコピーの場合も同様であるかを判定する。そうである場合には、エラーのあるデータを読み出したり、或いは修正したりするそれ以上の技術がないので、207で示されているように、ファームウエアのアップロードは失敗したものとみなされる。しかし、未だ全てのファームウエアコピーが特別な方法で読み出されていない場合には、ステップ209によって特別な読み出しパラメータが設定され、次のステップ199は異なるファームウエアコピーの所定のセクタがステップ81で読み出されるようにする。
特別の読み出し処理には、ステップ209および211でエラーのあるデータを読み出せそうな異なる読み出し条件を設定することが含まれる。マージングと呼ばれる1つの技術は、メモリセル電荷蓄積素子の各々の状態ごとの読み出し範囲を、データセクタの最初の通常の読み出し中に用いられる範囲よりも広げる。これには範囲間のマージンを縮小する作用があり、したがって読み出し処理に別のエラーを誘発することがある。しかし、データを通常通り読み出せない場合には、マージングによってそれぞれの範囲から外れたセルの状態が適正に読み出されるようにすることもできる。マージングを用いた読み出しが適正であるか否かのECCを用いることによる判定は、ステップ83以降を経て、通常のデータ読み出しと同様に判定される。
結論
これまで本発明の様々な態様を例示的な実施形態に関連して説明してきたが、本発明は添付の特許請求の範囲の全範囲内においてその権利が保護されるべきであることが理解されよう。
本発明の様々な態様を実施することができる不揮発性メモリシステムのブロック図である。 マップを含む予備ファイルとファームウエアファイルとの記憶を示す図1のシステムの不揮発性メモリのアドレス空間を示す概略図である。 図1および2の不揮発性メモリに記憶されるマップファイルのデータコンテンツを示す。 システムの初期化時にファームウエアを不揮発性メモリからコントローラにアップロードするための図1のメモリシステムの動作の第1の実施形態を示す流れ図である。 図4の流れ図によって示された動作の1つの態様を示す。 ファームウエアをホストから図1の不揮発性メモリシステムにダウンロードする態様を示した流れ図である。 カードの製造中にファームウエアをインストールし、かつアップグレードするために行われる動作を示す流れ図である。 システムの初期化時にファームウエアを不揮発性メモリからコントローラにアップロードするための図1のメモリシステムの動作の第2の実施形態を示す流れ図である。

Claims (27)

  1. 異なる位置に記憶されたファームウエアコードの少なくとも第1および第2のコピーを含むフラッシュメモリと、マイクロプロセッサと、マイクロプロセッサがアクセス可能なブートコードを含む読み出し専用メモリ(ROM)と、マイクロプロセッサがアクセス可能なファームウエアコードを記憶するためのランダムアクセスメモリ(RAM)とを有するメモリ記憶システムを初期化するための方法において、
    ファームウエアの第1のコピーをフラッシュメモリからRAMへと転送するためにブートコードを実行するステップと、
    ファームウエアコードの転送された第1のコピー内にビットエラーがあればそれを特定するステップと、
    修正可能なビットエラーが特定された場合には、エラーがあるビットを修正するステップと、
    修正不能なビットエラーが特定された場合には、修正不能なビットエラーを含む第1のコピーの少なくとも一部の代わりにファームウエアコードの第2のコピーの少なくとも一部をRAMへと読み込むステップと、
    RAMから得られるファームウエアコードのエラーのないコピーを実行するステップと、
    を含む方法。
  2. 前記転送された第1のコピー内にビットエラーがあればそれを特定するステップは、ファームウエア部分がフラッシュメモリからRAMに転送される際に、ファームウエア部分を連続的にECC回路へと送ることによって、ファームウエアの第1のコピーの個別部分から誤り訂正符号(ECC)を計算するステップと、計算されたECCと以前にファームウエアデータの第1のコピーの前記部分から計算されたECCとを比較するステップとを含む請求項1記載の方法。
  3. 前記エラーがあるビットを修正するステップは、エラーがあるビットを修正するためにマイクロプロセッサがブートコードのエラー修正アルゴリズムを実行するステップを含む請求項2記載の方法。
  4. 前記ファームウエアコードの第1のコピーの個別部分は、1つまたは複数のデータセクタと、以前にデータセクタから計算され、それと共にフラッシュメモリに記憶されたECCとを含む請求項2記載の方法。
  5. ファームウエアの第1のコピーをフラッシュメモリからRAMへと転送するためにブートコードを実行するステップの前に、
    最初に、フラッシュメモリの複数の固定位置の少なくとも1つに記憶され、かつ前記ファームウエアコードの少なくとも第1および第2のコピーが記憶されるフラッシュメモリの異なる位置のアドレスを含む初期化メモリマップが発見されるまで、フラッシュメモリ内の複数の固定位置に1つずつアクセスするステップと、
    前記アドレスを得るために初期化メモリマップのデータを読み出すステップと、
    その後、ファームウエアコードの第1のコピーにアクセスするステップと、
    をさらに含む請求項1記載の方法。
  6. 初期化メモリマップから読み出されたデータ内にビットエラーがあればそれを特定するステップと、
    読み出されたデータ内の修正可能なビットエラーが特定された場合には、エラーがあるビットを修正するステップと、
    読み出されたデータ内の修正不能なビットエラーが特定された場合には、初期化メモリマップのデータを異なる条件で再読み出しするステップと、
    をさらに含む請求項5記載の方法。
  7. 前記ファームウエアコードの少なくとも第1および第2のコピーは、フラッシュメモリの異なる位置に記憶され、その際、所定数の単数または複数のビットのファームウエアコードだけがそのフラッシュメモリ記憶素子ごとに記憶される一方、前記メモリ記憶システムはさらに、ユーザデータをフラッシュメモリの別の位置に記憶し、その際、フラッシュメモリの記憶素子ごとに前記所定のビット数以上のユーザデータを記憶する請求項1記載の方法。
  8. 前記所定数の単数または複数のビットは、フラッシュメモリ記憶素子ごとに厳密に1ビットである請求項7記載の方法。
  9. 転送されたファームウエアコードの第2のコピーの少なくとも一部にビットエラーがあればそれを特定するステップと、
    転送されたファームウエアコードの第2のコピーの少なくとも一部内の特定されたビットエラーが修正不能である場合には、転送された第2のコピーの少なくとも一部内のビットエラー数を減らす方向にする条件下で、ファームウエアコードの第2のコピーの少なくとも一部の読み出しを繰り返すステップと、
    をさらに含む請求項1記載の方法。
  10. 前記ファームウエアの第1のコピーをフラッシュメモリからRAMへと転送するためにブートコードを実行するステップの前に、ファームウエアがフラッシュメモリに記憶される際に設定されるファームウエアの存在フラグの状態をチェックするステップと、ファームウエアの存在フラグが設定された場合にだけファームウエアの第1のコピーをフラッシュメモリからRAMに転送するためにブートコードの実行を継続するステップとをさらに含む請求項1記載の方法。
  11. 前記単数または複数の所定数のいくつかのビットエラーが特定されるのに応答して、ファームウエアの第1のコピーのエラーのあるデータが記憶されるフラッシュメモリの位置に関連するハウスキーピングフラグを設定するステップをさらに含む請求項1記載の方法。
  12. 前記ハウスキーピングフラグの設定に応答して、ファームウエアコードのエラーのないコピーがRAMに転送された後、ファームウエアの第1のコピーのエラーのあるデータを修正するステップをさらに含む請求項11記載の方法。
  13. 前記ファームウエアの第1のコピーのエラーのあるデータを修正するステップは、ファームウエアの修正された第1のコピーをフラッシュメモリに再書き込みするステップを含む請求項12記載の方法。
  14. 前記ファームウエアの修正された第1のコピーを再書き込みするステップは、ファームウエアの修正された第1のコピーを当初記憶されていた位置とは異なる位置に再書き込みするステップを含む請求項13記載の方法。
  15. 前記ファームウエアの第1のコピーのエラーのあるデータを修正するステップは、誤り訂正符号を使用するステップを含む請求項12記載の方法。
  16. 前記ファームウエアの第1のコピーのエラーのあるデータを修正するステップは、ファームウエアコードの第2のコピーから良好なデータを転送するステップを含む請求項12記載の方法。
  17. フラッシュメモリと、マイクロプロセッサと、マイクロプロセッサによってアクセス可能なブートコードを含む読み出し専用メモリ(ROM)と、ランダムアクセスメモリ(RAM)と、送られてくるデータから誤り訂正符号(ECC)を計算する回路とを有するメモリ記憶システムの動作方法において、
    ファームウエアのコピーを1つずつECC回路へと送ることによって、フラッシュメモリのアドレス指定可能な異なる位置にファームウエアコードの少なくとも第1および第2のコピーを記憶し、かつそれによって計算されたECCをフラッシュメモリに記憶するステップと、
    その後、ファームウエアの第1のコピーをフラッシュメモリからECCを計算するECC回路を経てRAMに転送するために、マイクロプロセッサにブートコードを実行させることによってメモリシステムの動作を初期化するステップと、
    計算され記憶されたECCを利用して、転送されたファームウエアコードの第1のコピー内にビットエラーがあればそれを特定するステップと、
    ビットエラーが修正可能であると特定された場合には、エラーのあるビットを修正してエラーのないファームウエアコードがRAMにロードされるようにするために、マイクロプロセッサにブートコード内のエラー修正アルゴリズムを実行させるステップと、
    ビットエラーが修正不能であると特定された場合には、エラーのないファームウエアコードがRAMにロードされるようにするために、修正不能のビットエラーを含む第1のコピーの少なくとも一部の代わりにファームウエアコードの第2のコピーの少なくとも一部をRAMに転送するステップと、
    を含む方法。
  18. 前記ファームウエアコードを記憶するステップは、ファームウエアコードの1つまたは複数のセクタから個々に計算されるECCを記憶するステップを含む請求項17記載の方法。
  19. ファームウエアコードの前記少なくとも第1および第2のコピーのアドレス指定可能な位置を含むフラッシュメモリの所定の複数の位置の1つにマップを記憶するステップをさらに含み、前記マイクロプロセッサによってブートコードを実行するステップは、まずマップが発見されるまで所定の複数の位置に1つずつアクセスすることによってマップの位置を突き止め、マップが記憶されている位置でマップのコンテンツを読み出すステップを含む請求項17記載の方法。
  20. 前記ファームウエアコードを記憶するステップは、フラッシュメモリ内に少なくとも1つのファームウエアコピーが存在することを示すためのフラグを設定するステップをさらに含み、前記ファームウエアコードの第1または第2のコピーのいずれかを転送するためのブートコードを実行するステップは、まず関連するフラグを読み出し、関連するフラグが設定されている場合にのみファームウエアコードのコピーを読み出すステップに進む請求項17記載の方法。
  21. フラッシュメモリ記憶システムにおいて、
    データを電荷蓄積素子内に記憶し、アレイの複数の所定のアドレスの少なくとも1つにメモリマップを含むフラッシュメモリセルのアレイであって、前記マップはファームウエアコードの1つまたは複数のコピーが記憶されているアドレスを指定するデータを含むフラッシュメモリセルのアレイと、
    コントローラプロセッサと、
    記憶システムの初期化に応答してプロセッサがアクセスし、実行するブートコードを含む読み出し専用メモリと、
    実行される命令を得るためにプロセッサによるアクセスが可能なランダムアクセスメモリと、を備え、
    前記ブートコードは、プロセッサがフラッシュメモリ内の複数の所定のアドレスにアクセスして、ファームウエアの1つまたは複数のコピーが記憶されているアドレスを指定するメモリマップのデータの位置を突き止めてこれを読み出し、その後、前記特定された1つまたは複数のアドレスの少なくとも1つに位置するファームウエアコードを読み出し、その後、読み出されたファームウエアコードをランダムアクセスメモリ内に書き込むようにさせるフラッシュメモリ記憶システム。
  22. マップおよびファームウエアコードがメモリセル記憶素子ごとに1ビットずつフラッシュメモリに記憶され、さらにマップおよびファームウエアを含むメモリアレイのアドレス以外の少なくとも幾つかのアドレスにメモリセル記憶素子ごとに1ビット以上のデータが記憶される請求項21記載のシステム。
  23. フラッシュメモリ記憶システムにおいて、
    電荷蓄積素子内にデータを記憶し、ファームウエアコードの第1および第2のコピーから計算された誤り訂正符号(ECC)のそれぞれの第1および第2のセットと共に記憶されたファームウエアコードの少なくとも第1および第2のコピーを含むフラッシュメモリセルのアレイと、
    コントローラプロセッサと、
    回路を通過するデータからECCを計算する回路と、
    記憶システムの初期化に応答してプロセッサがアクセスし、実行するブートコードを含む読み出し専用メモリと、
    実行される命令を得るためにプロセッサによるアクセスが可能なランダムアクセスメモリと、を備え、
    前記ブートコードは、プロセッサにファームウエアコードの第1のコピーを読み出すようにさせ、またこれにはECCを計算し、ECCが関連するファームウエアコードの第1のコピーの一部に存在するいずれかのデータエラーに対する状態をファームウエアコードの第1のコピーと共に記憶されたECCの第1のセットに対して供給するECC計算回路へと前記読み出されたファームウエアコードの第1のコピーを送ることが含まれ、
    (A)ファームウエアコードの第1のコピーの所定の1つの部分にデータエラーがないことを状態が示している場合には、その後、ファームウエアコードの第1のコピーの所定の部分をランダムアクセスメモリへと書き込むが、
    (B)ファームウエアコードの第1のコピーの所定の部分にデータエラーがあることを状態が示している場合には、ブートコードはファームウエアコード内のビットエラー数が所定数を超えているか否かをプロセッサに判定させ、
    (i)ビットエラー数が所定数を超えていない場合には、さらにプロセッサにエラーのあるビットを修正させ、修正されたファームウエアコードの第1のコピーをランダムアクセスメモリへと書き込ませるが、
    (ii)ビットエラー数が所定数に等しいか、或いはこれを超えている場合には、さらにプロセッサにファームウエアコードの第2のコピーの少なくとも一部を読み出させ、少なくとも1つのECCを計算し、前記少なくとも1つのECCが関連するファームウエアコードの第2のコピーの前記少なくとも一部に存在するいずれかのデータエラーに対する状態を供給するECC計算回路へと前記読み出された第2のファームウエアコードを送らせるようにし、ファームウエアコードの第2のコピーの前記少なくとも一部内にデータエラーがないことを状態が示している場合には、その後ファームウエアコードの読み出された第2のコピーの前記少なくとも1つの部分をランダムアクセスメモリへと書き込ませるシステム。
  24. ファームウエアコードはメモリセル記憶素子ごとに1ビットずつフラッシュメモリに記憶され、さらにファームウエアコードを含むメモリアレイのアドレス以外の少なくとも幾つかのアドレスにメモリセル記憶素子ごとに1ビット以上データが記憶される請求項23記載のシステム。
  25. フラッシュメモリ記憶システムにおいて、
    データを電荷蓄積素子内に記憶し、ファームウエアコードの存在を示す第1のフラグと、ファームウエアコードが存在する場合にはこれがロードされるべきではないことを示す第2のフラグと共に記憶されたファームウエアコードの少なくとも1つのコピーを含むフラッシュメモリセルのアレイと、
    コントローラプロセッサと、
    記憶システムの初期化に応答してプロセッサがアクセスし、実行するブートコードを含む読み出し専用メモリと、
    実行される命令を得るためにプロセッサによるアクセスが可能なランダムアクセスメモリと、を備え、
    前記ブートコードは、プロセッサに第1および第2のフラグを探させると共に、
    (A)第1のフラグが存在し、第2のフラグが存在しない場合には、ファームウエアコードをランダムアクセスメモリへとロードするように進行させ、
    (B)第1のフラグと第2のフラグの双方が存在する場合には、ファームウエアコードをランダムアクセスメモリへとロードせずにテスト用にファームウエアコードにアクセスするようにさせ、
    (C)第1のフラグが存在しない場合には、ファームウエアコードをランダムアクセスメモリへとロードする試みも、テスト用にファームウエアコードにアクセスする試みもなされないようにするフラッシュメモリ記憶システム。
  26. 前記ファームウエアコードと第1および第2のフラグはメモリセル記憶素子ごとに1ビットずつフラッシュメモリ内に記憶され、さらに前記ファームウエアコードと第1および第2のフラグを含むメモリアレイのアドレス以外の少なくとも幾つかのアドレスにメモリセル記憶素子ごとに1ビット以上のデータが記憶される請求項25記載のシステム。
  27. 異なる位置に記憶されたファームウエアコードの少なくとも第1および第2のコピーおよび別の位置にあるユーザデータを含むフラッシュメモリと、マイクロプロセッサと、マイクロプロセッサがアクセス可能なブートコードを含む読み出し専用メモリ(ROM)と、マイクロプロセッサがアクセス可能なファームウエアコードを記憶するためのランダムアクセスメモリ(RAM)とを有するメモリ記憶システムを初期化するための方法において、
    フラッシュメモリの前記異なる位置内のメモリセルの個々の記憶素子内にファームウエアコードの前記少なくとも第1および第2の1ビットのコピーを記憶し、フラッシュメモリの前記別の位置内のメモリセルの個々の記憶素子内に1ビット以上の前記ユーザデータを記憶するステップと、
    ファームウエアコードの第1のコピーをフラッシュメモリからRAMへと転送するためにブートコードを実行するステップと、
    転送時にファームウエアコードの第1のコピー内にビットエラーがあればそれを特定するステップと、
    転送されたファームウエアコードの第1のコピー内の特定されたビットエラーの特定のものを修正するか、或いは特定されたビットエラーを含むファームウエアコードの第1のコピーの少なくとも一部を置き換えるために、ファームウエアコードの第2のコピーの少なくとも一部を読み出すステップと、
    RAMから得られるファームウエアコードのエラーのないコピーを実行するステップと、
    を含む方法。
JP2006547272A 2003-12-31 2004-12-16 フラッシュメモリシステムの起動動作 Active JP4933268B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/751,033 2003-12-31
US10/751,033 US7594135B2 (en) 2003-12-31 2003-12-31 Flash memory system startup operation
PCT/US2004/042965 WO2005066773A1 (en) 2003-12-31 2004-12-16 Flash memory system startup operation

Publications (2)

Publication Number Publication Date
JP2007518166A true JP2007518166A (ja) 2007-07-05
JP4933268B2 JP4933268B2 (ja) 2012-05-16

Family

ID=34749345

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006547272A Active JP4933268B2 (ja) 2003-12-31 2004-12-16 フラッシュメモリシステムの起動動作

Country Status (7)

Country Link
US (2) US7594135B2 (ja)
EP (1) EP1700207B8 (ja)
JP (1) JP4933268B2 (ja)
KR (1) KR101029938B1 (ja)
CN (1) CN1902583B (ja)
TW (1) TWI272536B (ja)
WO (1) WO2005066773A1 (ja)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011513823A (ja) * 2008-02-28 2011-04-28 ノキア コーポレイション メモリ機器のための拡張利用範囲
JP2011210277A (ja) * 2011-06-20 2011-10-20 Toshiba Corp 情報処理装置および情報処理方法
JP2011210278A (ja) * 2005-09-14 2011-10-20 Sandisk Corp メモリカードコントローラファームウェアのハードウェアドライバ完全性チェック
JP2012252557A (ja) * 2011-06-03 2012-12-20 Mega Chips Corp メモリコントローラ
JP2013033402A (ja) * 2011-08-02 2013-02-14 Nec Access Technica Ltd 情報更生装置、メモリ制御システム、情報更生方法およびコンピュータプログラム
US8694984B2 (en) 2009-04-03 2014-04-08 Samsung Electronics Co., Ltd. Memory apparatus and method of updating firmware of the memory apparatus
US8705465B2 (en) 2008-04-28 2014-04-22 Fujitsu Limited Connection processing method in wireless communication system, wireless base station, and wireless terminal
US8874824B2 (en) 2009-06-04 2014-10-28 Memory Technologies, LLC Apparatus and method to share host system RAM with mass storage memory RAM
US9311226B2 (en) 2012-04-20 2016-04-12 Memory Technologies Llc Managing operational state data of a memory module using host memory in association with state change
KR20160144562A (ko) * 2015-06-08 2016-12-19 삼성전자주식회사 불휘발성 메모리 모듈 및 그것의 동작 방법
JP2020017262A (ja) * 2018-07-24 2020-01-30 三星電子株式会社Samsung Electronics Co.,Ltd. ソリッドステートドライブ及びそのメタデータアクセス方法
JP2020086535A (ja) * 2018-11-15 2020-06-04 Tdk株式会社 メモリコントローラ、及びメモリシステム
JP2021140553A (ja) * 2020-03-06 2021-09-16 キオクシア株式会社 メモリシステム及びその制御方法
US11249895B2 (en) 2018-10-24 2022-02-15 Tdk Corporation Memory controller and memory system

Families Citing this family (143)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7594135B2 (en) * 2003-12-31 2009-09-22 Sandisk Corporation Flash memory system startup operation
EP1723498A2 (de) * 2004-03-11 2006-11-22 Preh KeyTec GmbH Tastatur, insbesondere kassentastatur, und verfahren zur inbetriebnahme sowie zum austausch und update von firmware der tastatur
DE102004013493B4 (de) * 2004-03-18 2009-11-05 Infineon Technologies Ag Zugriffs-Verfahren für einen NAND-Flash-Speicherbaustein und ein entsprechender NAND-Flash-Speicherbaustein
US20050268077A1 (en) * 2004-05-11 2005-12-01 Peter Kuan Memory system for an electronic device and the method for controlling the same
KR101074423B1 (ko) * 2004-05-29 2011-10-17 삼성전자주식회사 메모리 카드의 처리 상황을 판별할 수 있는 메모리 카드시스템 및 그것의 판별 방법
WO2005116827A1 (en) * 2004-05-31 2005-12-08 Stmicroelectronics Pvt. Ltd. A method for remotely upgrading the firmware of a target device using wireless technology
US7336531B2 (en) 2004-06-25 2008-02-26 Micron Technology, Inc. Multiple level cell memory device with single bit per cell, re-mappable memory block
US7340594B2 (en) * 2004-06-30 2008-03-04 Intel Corporation Bios-level incident response system and method
US7269829B2 (en) * 2004-07-30 2007-09-11 Signature Control Systems, Inc. Method and system for remote update of microprocessor code for irrigation controllers
US7334117B2 (en) * 2004-08-04 2008-02-19 National Instruments Corporation Device boot loader for processing one or more requests from a host computer system concurrently with loading or updating the firmware of the device
US8275969B2 (en) * 2004-08-05 2012-09-25 Sandisk Il Ltd. Storage with persistent user data
US20060070059A1 (en) * 2004-09-27 2006-03-30 Starr Matthew T Co-existing dedicated system software and read/writeable data storage space on removable media
JP2006146485A (ja) * 2004-11-18 2006-06-08 Toshiba Corp 携帯端末
US20060143368A1 (en) * 2004-12-23 2006-06-29 M-Systems Flash Disk Pioneers Ltd. Method for using a multi-bit cell flash device in a system not designed for the device
US7970984B2 (en) * 2004-12-23 2011-06-28 Sandisk Il Ltd. Method for using a multi-bit cell flash device in a system not designed for the device
JP4817836B2 (ja) 2004-12-27 2011-11-16 株式会社東芝 カードおよびホスト機器
US8423788B2 (en) * 2005-02-07 2013-04-16 Sandisk Technologies Inc. Secure memory card with life cycle phases
US8321686B2 (en) 2005-02-07 2012-11-27 Sandisk Technologies Inc. Secure memory card with life cycle phases
US8108691B2 (en) 2005-02-07 2012-01-31 Sandisk Technologies Inc. Methods used in a secure memory card with life cycle phases
KR100640389B1 (ko) * 2005-04-06 2006-10-30 삼성전자주식회사 Nand플래시 메모리를 구비한 장치에서 어플리케이션을실행하는 방법 및 그 장치
TWI345175B (en) * 2005-06-08 2011-07-11 Winbond Electronics Corp Method for updating firmware of memory card
US7748031B2 (en) 2005-07-08 2010-06-29 Sandisk Corporation Mass storage device with automated credentials loading
TWI267861B (en) * 2005-09-06 2006-12-01 Alcor Micro Corp Method and device for loading configuration values of nonvolatile memory
US20070058923A1 (en) * 2005-09-09 2007-03-15 Buhler Kirk A Use of flash based memory to store and play feature length licensed movie or TV productions
US8966284B2 (en) 2005-09-14 2015-02-24 Sandisk Technologies Inc. Hardware driver integrity check of memory card controller firmware
US7934049B2 (en) 2005-09-14 2011-04-26 Sandisk Corporation Methods used in a secure yet flexible system architecture for secure devices with flash mass storage memory
CN1937083B (zh) * 2005-09-23 2010-05-05 安国国际科技股份有限公司 非挥发性存储器设定值加载方法与其存储器装置
US7631245B2 (en) 2005-09-26 2009-12-08 Sandisk Il Ltd. NAND flash memory controller exporting a NAND interface
KR100625811B1 (ko) * 2005-12-09 2006-09-18 엠텍비젼 주식회사 코드 데이터 에러 정정 방법 및 장치
US20070169086A1 (en) * 2005-12-30 2007-07-19 Siliconmotion Inc. System and method for updating in-system program
WO2007097031A1 (ja) * 2006-02-27 2007-08-30 Fujitsu Limited 情報処理装置及び処理実行方法
US7822958B1 (en) * 2006-03-10 2010-10-26 Altera Corporation Booting mechanism for FPGA-based embedded system
US7810017B2 (en) * 2006-03-20 2010-10-05 Micron Technology, Inc. Variable sector-count ECC
JP4908026B2 (ja) * 2006-03-22 2012-04-04 株式会社東芝 情報処理装置
US20070236519A1 (en) * 2006-03-31 2007-10-11 Edelen John G Multi-Level Memory for Micro-Fluid Ejection Heads
JP4840859B2 (ja) * 2006-05-10 2011-12-21 ルネサスエレクトロニクス株式会社 半導体装置、及び起動方法
JP2009205187A (ja) * 2006-06-23 2009-09-10 Panasonic Corp メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム及びメモリ制御方法
US7292495B1 (en) * 2006-06-29 2007-11-06 Freescale Semiconductor, Inc. Integrated circuit having a memory with low voltage read/write operation
TWI316184B (en) * 2006-08-03 2009-10-21 Etron Technology Inc Programmable system-chip device and method of programming firmware
TWI387878B (zh) * 2006-08-21 2013-03-01 Sandisk Il Ltd 輸出以邏輯區段為基礎的介面之非及快閃記憶體控制器
US20080072058A1 (en) * 2006-08-24 2008-03-20 Yoram Cedar Methods in a reader for one time password generating device
US20080052524A1 (en) * 2006-08-24 2008-02-28 Yoram Cedar Reader for one time password generating device
JP2008084291A (ja) * 2006-08-28 2008-04-10 Fujitsu Ltd 記憶装置、制御方法及び制御装置
JP2008090433A (ja) * 2006-09-29 2008-04-17 Toshiba Corp メモリコントローラ、メモリシステム及びデータ転送方法
US20080109647A1 (en) * 2006-11-07 2008-05-08 Lee Merrill Gavens Memory controllers for performing resilient firmware upgrades to a functioning memory
US8286156B2 (en) * 2006-11-07 2012-10-09 Sandisk Technologies Inc. Methods and apparatus for performing resilient firmware upgrades to a functioning memory
US8423794B2 (en) * 2006-12-28 2013-04-16 Sandisk Technologies Inc. Method and apparatus for upgrading a memory card that has security mechanisms for preventing copying of secure content and applications
KR100881052B1 (ko) * 2007-02-13 2009-01-30 삼성전자주식회사 플래시 메모리의 매핑 테이블 검색 시스템 및 그에 따른검색방법
EP1973016A1 (de) * 2007-03-19 2008-09-24 Siemens Aktiengesellschaft Verfahren zum Durchführen der Firmware eines Automatisierungsgerätes
JPWO2008117520A1 (ja) * 2007-03-28 2010-07-15 パナソニック株式会社 メモリコントローラ、不揮発性メモリシステムおよびホスト装置
TW200849096A (en) * 2007-06-12 2008-12-16 Realtek Semiconductor Corp Data recovering method
JP5072446B2 (ja) * 2007-06-15 2012-11-14 スパンション エルエルシー 半導体装置及びその制御方法
KR20090030078A (ko) 2007-09-19 2009-03-24 삼성전자주식회사 부트 로딩 동작을 안전하게 수행하기 위한 반도체 메모리장치 및 그것의 부트 로딩 방법
KR101420798B1 (ko) * 2007-11-23 2014-07-17 삼성전자주식회사 실시간 응답성이 요구되는 코드를 위한 요구 페이징 방법및 단말
US20090172246A1 (en) * 2007-12-26 2009-07-02 Sandisk Il Ltd. Device and method for managing initialization thereof
JP2009187199A (ja) * 2008-02-05 2009-08-20 Panasonic Corp 情報処理システム及び情報処理方法
TWI381387B (zh) * 2008-02-21 2013-01-01 Phison Electronics Corp 儲存裝置、控制器及其資料存取方法
US8281229B2 (en) * 2008-12-30 2012-10-02 Intel Corporation Firmware verification using system memory error check logic
US8375227B2 (en) * 2009-02-02 2013-02-12 Microsoft Corporation Abstracting programmatic representation of data storage systems
US8751860B2 (en) * 2009-06-03 2014-06-10 Micron Technology, Inc. Object oriented memory in solid state devices
TWI442406B (zh) * 2009-07-02 2014-06-21 Silicon Motion Inc 針對一快閃記憶體的控制器之錯誤管理機制來提升驗證效率之方法以及相關之記憶裝置及其控制器
CN101604248B (zh) * 2009-07-20 2012-09-26 北京海尔集成电路设计有限公司 一种修正只读存储器中程序的嵌入式系统及其实现方法
CN102043651B (zh) * 2009-10-22 2013-07-03 鸿富锦精密工业(深圳)有限公司 Nand闪存及其数据更新管理方法
TWI425514B (zh) * 2009-10-29 2014-02-01 Hon Hai Prec Ind Co Ltd Nand快閃記憶體及其資料更新管理方法
KR101090394B1 (ko) * 2009-12-24 2011-12-07 주식회사 하이닉스반도체 예비 영역을 유동적으로 관리하는 반도체 스토리지 시스템 및 그 제어 방법
US8443263B2 (en) 2009-12-30 2013-05-14 Sandisk Technologies Inc. Method and controller for performing a copy-back operation
US8595411B2 (en) 2009-12-30 2013-11-26 Sandisk Technologies Inc. Method and controller for performing a sequence of commands
KR101648531B1 (ko) * 2010-02-12 2016-08-17 삼성전자주식회사 불휘발성 메모리 시스템과 이의 동작 방법
US20120173795A1 (en) * 2010-05-25 2012-07-05 Ocz Technology Group, Inc. Solid state drive with low write amplification
TWI426385B (zh) * 2010-06-29 2014-02-11 Genesys Logic Inc 支援大容量儲存裝置存取之方法與系統
CN101944036B (zh) * 2010-09-27 2013-05-01 苏州光格设备有限公司 一种基于工业监控系统的ria应用的内存优化方法
US9612979B2 (en) * 2010-10-22 2017-04-04 Intel Corporation Scalable memory protection mechanism
US8627141B2 (en) 2011-02-14 2014-01-07 Dell Products L.P. System and method for auto-failover and version matching of bootloader in an access controller
KR101293223B1 (ko) 2011-04-01 2013-08-05 (주)아토솔루션 비휘발성 메모리 소자, 전자제어 시스템, 및 비휘발성 메모리 소자의 동작방법
CN102163158A (zh) * 2011-04-29 2011-08-24 北京凡达讯科技有限公司 一种系统级芯片利用nand闪存启动的方法
TWI447579B (zh) 2011-05-18 2014-08-01 Phison Electronics Corp 程式碼載入與存取方法、記憶體控制器與記憶體儲存裝置
US8886881B2 (en) * 2011-05-24 2014-11-11 International Business Machines Corporation Implementing storage adapter performance optimization with parity update footprint mirroring
CN102800357B (zh) * 2011-05-27 2016-05-18 群联电子股份有限公司 程序码载入与存取方法、存储器控制器与存储器储存装置
US8909981B2 (en) * 2011-06-21 2014-12-09 Hamilton Sundstrand Corporation Control system software execution during fault detection
US8706955B2 (en) * 2011-07-01 2014-04-22 Apple Inc. Booting a memory device from a host
WO2012106897A1 (zh) * 2011-07-18 2012-08-16 华为技术有限公司 数据处理方法及设备
US9195530B1 (en) 2011-09-06 2015-11-24 Western Digital Technologies, Inc. Systems and methods for improved data management in data storage systems
US8707104B1 (en) 2011-09-06 2014-04-22 Western Digital Technologies, Inc. Systems and methods for error injection in data storage systems
US8713357B1 (en) 2011-09-06 2014-04-29 Western Digital Technologies, Inc. Systems and methods for detailed error reporting in data storage systems
US8700834B2 (en) 2011-09-06 2014-04-15 Western Digital Technologies, Inc. Systems and methods for an enhanced controller architecture in data storage systems
KR20130032077A (ko) * 2011-09-22 2013-04-01 에스케이하이닉스 주식회사 설정 데이터 저장회로, 이를 포함하는 비휘발성 메모리 장치 및 메모리 시스템
CN102508742B (zh) * 2011-11-03 2013-12-18 中国人民解放军国防科学技术大学 面向硬件不可恢复内存故障的内核代码软容错方法
US20130166893A1 (en) * 2011-12-23 2013-06-27 Sandisk Technologies Inc. Auxiliary card initialization routine
CN103197750B (zh) * 2012-01-09 2015-10-28 爱思开海力士有限公司 内嵌式记忆卡控制系统及其内嵌式记忆卡
US8954791B2 (en) * 2012-01-18 2015-02-10 Seagate Technology Llc Mirroring disk drive sectors
US9046915B2 (en) * 2012-02-27 2015-06-02 Advanced Micro Devices, Inc. Circuit and method for initializing a computer system
CN102637461B (zh) * 2012-03-07 2014-12-03 山东华芯半导体有限公司 支持坏块闪存扫描的启动方法
US9053008B1 (en) 2012-03-26 2015-06-09 Western Digital Technologies, Inc. Systems and methods for providing inline parameter service in data storage devices
TWI520148B (zh) * 2012-07-05 2016-02-01 慧榮科技股份有限公司 記憶體裝置和記憶體控制方法
US9804917B2 (en) 2012-09-25 2017-10-31 Hewlett Packard Enterprise Development Lp Notification of address range including non-correctable error
CN102968355A (zh) * 2012-11-13 2013-03-13 浪潮电子信息产业股份有限公司 一种基于Intel-Brickland-EX平台的内存纠错方法
TWI494849B (zh) * 2013-05-06 2015-08-01 Phison Electronics Corp 韌體碼載入方法、記憶體控制器與記憶體儲存裝置
US9116774B2 (en) 2013-05-14 2015-08-25 Sandisk Technologies Inc. Firmware updates for multiple product configurations
US9183086B2 (en) * 2013-06-03 2015-11-10 Sandisk Technologies Inc. Selection of data for redundancy calculation in three dimensional nonvolatile memory
KR20140144989A (ko) * 2013-06-12 2014-12-22 에스케이하이닉스 주식회사 메모리 시스템, 반도체 메모리 장치 및 그것들의 동작 방법
US20150067314A1 (en) * 2013-08-30 2015-03-05 Timothy J. Strauss Secure firmware flash controller
US9177673B2 (en) 2013-10-28 2015-11-03 Sandisk Technologies Inc. Selection of data for redundancy calculation by likely error rate
CN104679622A (zh) * 2013-11-29 2015-06-03 英业达科技有限公司 基本输入输出系统维护方法
TWI484337B (zh) 2014-01-06 2015-05-11 威盛電子股份有限公司 記憶體晶片與資料保護方法
CN103927187B (zh) * 2014-05-09 2017-03-22 金祺创(北京)技术有限公司 嵌入式系统程序执行方法
US9772856B2 (en) * 2014-07-10 2017-09-26 Lattice Semiconductor Corporation System-level dual-boot capability in systems having one or more devices without native dual-boot capability
US9858229B2 (en) * 2014-09-30 2018-01-02 International Business Machines Corporation Data access protection for computer systems
CN104731674B (zh) * 2015-02-02 2020-09-01 北京忆恒创源科技有限公司 使用mlc nvm存储电子系统固件的方法与设备
DE102015203776A1 (de) * 2015-03-03 2016-09-08 Robert Bosch Gmbh Verfahren zur Programmierung eines Steuergeräts eines Kraftfahrzeugs
WO2016143170A1 (en) * 2015-03-09 2016-09-15 Kabushiki Kaisha Toshiba Semiconductor storage device
US9886285B2 (en) * 2015-03-31 2018-02-06 Western Digital Technologies, Inc. Communication interface initialization
US10157093B2 (en) * 2015-05-27 2018-12-18 Nxp Usa, Inc. Data integrity check within a data processing system
US10055236B2 (en) * 2015-07-02 2018-08-21 Sandisk Technologies Llc Runtime data storage and/or retrieval
US9691473B2 (en) 2015-09-22 2017-06-27 Sandisk Technologies Llc Adaptive operation of 3D memory
US9401216B1 (en) 2015-09-22 2016-07-26 Sandisk Technologies Llc Adaptive operation of 3D NAND memory
US9952925B2 (en) * 2016-01-06 2018-04-24 Micron Technology, Inc. Error code calculation on sensing circuitry
JP6723863B2 (ja) * 2016-08-01 2020-07-15 オリンパス株式会社 組み込みシステム、撮影機器及びリフレッシュ方法
US10423487B2 (en) * 2016-08-19 2019-09-24 Samsung Electronics Co., Ltd. Data protection offloads using SSD peering
FR3055714B1 (fr) 2016-09-08 2018-09-28 Continental Automotive France Procede de correction d'erreur dans une memoire flash
JP2018067072A (ja) * 2016-10-18 2018-04-26 東芝メモリ株式会社 半導体記憶装置及びその制御方法
KR101886176B1 (ko) * 2016-10-25 2018-08-08 시큐리티플랫폼 주식회사 소유자만 기록 가능한 부트영역을 포함하는 저장장치
CN108877856B (zh) 2017-05-10 2021-02-19 慧荣科技股份有限公司 储存装置、记录方法以及预载方法
TWI646551B (zh) * 2017-05-10 2019-01-01 慧榮科技股份有限公司 儲存裝置、記錄方法以及預載方法
TW201913391A (zh) * 2017-09-01 2019-04-01 慧榮科技股份有限公司 快閃記憶體裝置的重新啟動方法以及使用該方法的裝置
KR20190029316A (ko) * 2017-09-12 2019-03-20 에스케이하이닉스 주식회사 마이크로 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작방법
US11537389B2 (en) 2017-12-12 2022-12-27 Infineon Technologies LLC Memory devices, systems, and methods for updating firmware with single memory device
US10552145B2 (en) * 2017-12-12 2020-02-04 Cypress Semiconductor Corporation Memory devices, systems, and methods for updating firmware with single memory device
TWI659306B (zh) * 2018-01-10 2019-05-11 英屬開曼群島商捷鼎創新股份有限公司 卷搬移中執行資料讀寫的方法及電子裝置
KR20200019444A (ko) * 2018-08-14 2020-02-24 에스케이하이닉스 주식회사 데이터 처리 시스템 및 데이터 처리 시스템의 동작 방법
CN109284135B (zh) * 2018-09-07 2022-02-01 深圳市航顺芯片技术研发有限公司 一种简捷调用微控制器内部启动程序的方法
CN109634676B (zh) * 2018-12-12 2021-10-26 深圳忆联信息系统有限公司 基于主控芯片的nand boot启动方法和装置
US10896033B2 (en) * 2018-12-31 2021-01-19 Micron Technology, Inc. Configurable NAND firmware search parameters
JP2020154540A (ja) * 2019-03-19 2020-09-24 キオクシア株式会社 メモリシステム及び制御システム
US11288373B2 (en) * 2019-04-11 2022-03-29 Baidu Usa Llc Boot failure recovery scheme for hardware-based system of autonomous driving vehicles
FR3099607B1 (fr) * 2019-07-30 2021-11-05 Stmicroelectronics Grand Ouest Sas Composant électronique à micrologiciel
US11822930B2 (en) * 2019-07-31 2023-11-21 Hewlett Packard Enterprise Development Lp Electrically programmable application-specific integrated circuit initialization engine
CN111209137B (zh) * 2020-01-06 2021-09-17 支付宝(杭州)信息技术有限公司 数据访问控制方法及装置、数据访问设备及系统
US11422896B2 (en) * 2020-03-27 2022-08-23 Intel Corporation Technology to enable secure and resilient recovery of firmware data
US11500719B1 (en) * 2020-03-31 2022-11-15 Amazon Technologies, Inc. Reliability improvements for memory technologies
TWI749704B (zh) * 2020-08-13 2021-12-11 群聯電子股份有限公司 韌體碼的執行方法、記憶體儲存裝置及記憶體控制電路單元
JP2022051374A (ja) * 2020-09-18 2022-03-31 キオクシア株式会社 半導体記憶装置及び半導体記憶装置の動作制御プログラムの書き込み方法
US20210110043A1 (en) * 2020-12-23 2021-04-15 Intel Corporation Platform firmware boot mechanism
CN116737181A (zh) * 2023-04-26 2023-09-12 珠海妙存科技有限公司 通用闪存存储芯片及烧录方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60186935A (ja) * 1984-03-05 1985-09-24 Nec Corp マイクロプログラムロ−ド方式
JPH07302175A (ja) * 1994-05-09 1995-11-14 Toshiba Corp 半導体ディスク装置
JPH08234922A (ja) * 1994-10-25 1996-09-13 Hewlett Packard Co <Hp> 鏡像化メモリ用エラー検出システム
JPH1131102A (ja) * 1997-07-14 1999-02-02 Toshiba Corp データ記憶システム及び同システムに適用するアクセス制御方法
JP2001027953A (ja) * 1999-07-15 2001-01-30 Mitsubishi Electric Corp 半導体記憶装置
US6665813B1 (en) * 2000-08-03 2003-12-16 International Business Machines Corporation Method and apparatus for updateable flash memory design and recovery with minimal redundancy
US6834384B2 (en) * 2001-03-14 2004-12-21 General Instrument Corporation Methods and apparatus for upgrading firmware in an embedded system

Family Cites Families (69)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US560660A (en) * 1896-05-26 Wheel
JPS6048769B2 (ja) * 1978-05-23 1985-10-29 株式会社東芝 ロ−デイング方式
JPS5760409A (en) * 1980-09-30 1982-04-12 Fanuc Ltd Loading system of numerical control device
US4439837A (en) * 1981-06-16 1984-03-27 Ncr Corporation Non-volatile memory system for intelligent terminals
US4590557A (en) * 1983-09-12 1986-05-20 Pitney Bowes Inc. Method and apparatus for controlling software configurations in data processing systems
JPS61151744A (ja) * 1984-12-26 1986-07-10 Hitachi Ltd マイクロプログラムロ−ド時の障害回復方式
CA1242809A (en) * 1985-12-20 1988-10-04 Mitel Corporation Data storage system
US4910666A (en) * 1986-12-18 1990-03-20 Bull Hn Information Systems Inc. Apparatus for loading and verifying a control store memory of a central subsystem
US4914576A (en) * 1986-12-18 1990-04-03 Bull Hn Information Systems Inc. Apparatus and method of loading a control store memory of a central subsystem
US5172328A (en) * 1988-04-01 1992-12-15 Restaurant Technology, Inc. Food preparation system and method
US5095344A (en) * 1988-06-08 1992-03-10 Eliyahou Harari Highly compact eprom and flash eeprom devices
US5043940A (en) * 1988-06-08 1991-08-27 Eliyahou Harari Flash EEPROM memory systems having multistate storage cells
US5148516A (en) * 1988-08-30 1992-09-15 Hewlett-Packard Company Efficient computer terminal system utilizing a single slave processor
US5172338B1 (en) 1989-04-13 1997-07-08 Sandisk Corp Multi-state eeprom read and write circuits and techniques
US5003591A (en) * 1989-05-25 1991-03-26 General Instrument Corporation Functionally modifiable cable television converter system
CA2010122A1 (en) * 1989-06-21 1990-12-21 Makoto Sakamoto Integrated circuit including programmable circuit
EP0489204B1 (en) 1990-12-04 1995-08-16 Hewlett-Packard Limited Reprogrammable data storage device
US5343063A (en) * 1990-12-18 1994-08-30 Sundisk Corporation Dense vertical programmable read only memory cell structure and processes for making them
US5268928A (en) * 1991-10-15 1993-12-07 Racal-Datacom, Inc. Data modem with remote firmware update
JPH05204770A (ja) * 1991-10-17 1993-08-13 Nec Corp メモリエラーリカバリ方法
US6222762B1 (en) * 1992-01-14 2001-04-24 Sandisk Corporation Multi-state memory
US5313421A (en) * 1992-01-14 1994-05-17 Sundisk Corporation EEPROM with split gate source side injection
US5532962A (en) * 1992-05-20 1996-07-02 Sandisk Corporation Soft errors handling in EEPROM devices
US5315541A (en) * 1992-07-24 1994-05-24 Sundisk Corporation Segmented column memory array
JPH06119230A (ja) * 1992-10-06 1994-04-28 Fujitsu Ltd 半導体記憶装置
US5379342A (en) * 1993-01-07 1995-01-03 International Business Machines Corp. Method and apparatus for providing enhanced data verification in a computer system
JPH06347277A (ja) * 1993-06-04 1994-12-20 Sumitomo Electric Ind Ltd ナビゲーション装置
US5555204A (en) * 1993-06-29 1996-09-10 Kabushiki Kaisha Toshiba Non-volatile semiconductor memory device
US5570032A (en) * 1993-08-17 1996-10-29 Micron Technology, Inc. Wafer scale burn-in apparatus and process
KR0169267B1 (ko) * 1993-09-21 1999-02-01 사토 후미오 불휘발성 반도체 기억장치
US5661053A (en) * 1994-05-25 1997-08-26 Sandisk Corporation Method of making dense flash EEPROM cell array and peripheral supporting circuits formed in deposited field oxide with the use of spacers
US5603001A (en) * 1994-05-09 1997-02-11 Kabushiki Kaisha Toshiba Semiconductor disk system having a plurality of flash memories
US5606660A (en) 1994-10-21 1997-02-25 Lexar Microsystems, Inc. Method and apparatus for combining controller firmware storage and controller logic in a mass storage system
JPH09160834A (ja) * 1995-12-01 1997-06-20 Mitsubishi Electric Corp フラッシュメモリを用いた計算機
US5903495A (en) * 1996-03-18 1999-05-11 Kabushiki Kaisha Toshiba Semiconductor device and memory system
JP3904099B2 (ja) * 1996-04-24 2007-04-11 ソニー株式会社 情報処理装置、プログラム更新方法、および、情報処理システム
US5960445A (en) 1996-04-24 1999-09-28 Sony Corporation Information processor, method of updating a program and information processing system
JPH09330273A (ja) * 1996-06-10 1997-12-22 Mitsubishi Electric Corp メモリカードおよびメモリカードにおける誤り訂正方法
US5819087A (en) * 1996-07-19 1998-10-06 Compaq Computer Corporation Flash ROM sharing between processor and microcontroller during booting and handling warm-booting events
US5793943A (en) * 1996-07-29 1998-08-11 Micron Electronics, Inc. System for a primary BIOS ROM recovery in a dual BIOS ROM computer system
JP3773607B2 (ja) * 1996-11-28 2006-05-10 Necエレクトロニクス株式会社 フラッシュeeprom内蔵マイクロコンピュータ
US5930167A (en) * 1997-07-30 1999-07-27 Sandisk Corporation Multi-state non-volatile flash memory capable of being its own two state write cache
US5909449A (en) * 1997-09-08 1999-06-01 Invox Technology Multibit-per-cell non-volatile memory with error detection and correction
DE69739825D1 (de) 1997-09-24 2010-05-12 St Microelectronics Srl Sektorbasierter Halbleiterspeicher mit verstellbaren Sektoradressen
JP2914360B2 (ja) * 1997-09-30 1999-06-28 ソニー株式会社 外部記憶装置及びデータ処理方法
KR100248757B1 (ko) * 1997-12-20 2000-03-15 윤종용 손상된 롬 바이오스 복구 방법
JP3968876B2 (ja) * 1998-06-26 2007-08-29 株式会社デンソー 電子制御装置
JP2000173289A (ja) * 1998-12-10 2000-06-23 Toshiba Corp エラー訂正可能なフラッシュメモリシステム
US6301656B1 (en) * 1999-01-11 2001-10-09 Alcatel Usa Sourcing, L.P. Method and apparatus for initial programming of flash based firmware
US6282145B1 (en) 1999-01-14 2001-08-28 Silicon Storage Technology, Inc. Array architecture and operating methods for digital multilevel nonvolatile memory integrated circuit system
US6426893B1 (en) * 2000-02-17 2002-07-30 Sandisk Corporation Flash eeprom system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks
US6522580B2 (en) * 2001-06-27 2003-02-18 Sandisk Corporation Operating techniques for reducing effects of coupling between storage elements of a non-volatile memory operated in multiple data states
US7165137B2 (en) 2001-08-06 2007-01-16 Sandisk Corporation System and method for booting from a non-volatile application and file storage device
US6456528B1 (en) * 2001-09-17 2002-09-24 Sandisk Corporation Selective operation of a multi-state non-volatile memory system in a binary mode
US6925007B2 (en) 2001-10-31 2005-08-02 Sandisk Corporation Multi-state non-volatile integrated circuit memory systems that employ dielectric storage elements
JP3816788B2 (ja) * 2001-11-22 2006-08-30 株式会社東芝 不揮発性半導体記憶装置
KR20040080928A (ko) * 2002-01-31 2004-09-20 마츠시타 덴끼 산교 가부시키가이샤 정보 처리 장치, 메모리 관리 장치, 메모리 관리 방법, 및정보 처리 방법
JP2003242044A (ja) * 2002-02-18 2003-08-29 Hitachi Kokusai Electric Inc マイクロコンピュータ回路
US7234052B2 (en) 2002-03-08 2007-06-19 Samsung Electronics Co., Ltd System boot using NAND flash memory and method thereof
TWI228220B (en) * 2002-03-08 2005-02-21 Samsung Electronics Co Ltd System boot using NAND flash memory and method thereof
US7080245B2 (en) * 2002-05-23 2006-07-18 Hewlett-Packard Development Company, L.P. Method and system of switching between two or more images of firmware on a host device
US7082525B2 (en) * 2002-10-02 2006-07-25 Sandisk Corporation Booting from non-linear memory
US7043664B1 (en) * 2002-10-31 2006-05-09 Microsoft Corporation Firmware recovery
US7039799B2 (en) * 2002-10-31 2006-05-02 Lsi Logic Corporation Methods and structure for BIOS reconfiguration
US7089414B2 (en) * 2003-04-10 2006-08-08 International Business Machines Corporation Method and apparatus for updating a microcode image in a memory
US7363484B2 (en) * 2003-09-15 2008-04-22 Hewlett-Packard Development Company, L.P. Apparatus and method for selectively mapping proper boot image to processors of heterogeneous computer systems
US20050081090A1 (en) * 2003-09-29 2005-04-14 Giga-Byte Technology Co., Ltd. Method for automatically and safely recovering BIOS memory circuit in memory device including double BIOS memory circuits
US7012835B2 (en) 2003-10-03 2006-03-14 Sandisk Corporation Flash memory data correction and scrub techniques
US7594135B2 (en) 2003-12-31 2009-09-22 Sandisk Corporation Flash memory system startup operation

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60186935A (ja) * 1984-03-05 1985-09-24 Nec Corp マイクロプログラムロ−ド方式
JPH07302175A (ja) * 1994-05-09 1995-11-14 Toshiba Corp 半導体ディスク装置
JPH08234922A (ja) * 1994-10-25 1996-09-13 Hewlett Packard Co <Hp> 鏡像化メモリ用エラー検出システム
JPH1131102A (ja) * 1997-07-14 1999-02-02 Toshiba Corp データ記憶システム及び同システムに適用するアクセス制御方法
JP2001027953A (ja) * 1999-07-15 2001-01-30 Mitsubishi Electric Corp 半導体記憶装置
US6665813B1 (en) * 2000-08-03 2003-12-16 International Business Machines Corporation Method and apparatus for updateable flash memory design and recovery with minimal redundancy
US6834384B2 (en) * 2001-03-14 2004-12-21 General Instrument Corporation Methods and apparatus for upgrading firmware in an embedded system

Cited By (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011210278A (ja) * 2005-09-14 2011-10-20 Sandisk Corp メモリカードコントローラファームウェアのハードウェアドライバ完全性チェック
US9063850B2 (en) 2008-02-28 2015-06-23 Memory Technologies Llc Extended utilization area for a memory device
US11494080B2 (en) 2008-02-28 2022-11-08 Memory Technologies Llc Extended utilization area for a memory device
US11182079B2 (en) 2008-02-28 2021-11-23 Memory Technologies Llc Extended utilization area for a memory device
US11829601B2 (en) 2008-02-28 2023-11-28 Memory Technologies Llc Extended utilization area for a memory device
US8601228B2 (en) 2008-02-28 2013-12-03 Memory Technologies, LLC Extended utilization area for a memory device
US11550476B2 (en) 2008-02-28 2023-01-10 Memory Technologies Llc Extended utilization area for a memory device
US10540094B2 (en) 2008-02-28 2020-01-21 Memory Technologies Llc Extended utilization area for a memory device
US11907538B2 (en) 2008-02-28 2024-02-20 Memory Technologies Llc Extended utilization area for a memory device
US9367486B2 (en) 2008-02-28 2016-06-14 Memory Technologies Llc Extended utilization area for a memory device
JP2011513823A (ja) * 2008-02-28 2011-04-28 ノキア コーポレイション メモリ機器のための拡張利用範囲
US8705465B2 (en) 2008-04-28 2014-04-22 Fujitsu Limited Connection processing method in wireless communication system, wireless base station, and wireless terminal
US8694984B2 (en) 2009-04-03 2014-04-08 Samsung Electronics Co., Ltd. Memory apparatus and method of updating firmware of the memory apparatus
US10983697B2 (en) 2009-06-04 2021-04-20 Memory Technologies Llc Apparatus and method to share host system RAM with mass storage memory RAM
US9983800B2 (en) 2009-06-04 2018-05-29 Memory Technologies Llc Apparatus and method to share host system RAM with mass storage memory RAM
US11733869B2 (en) 2009-06-04 2023-08-22 Memory Technologies Llc Apparatus and method to share host system RAM with mass storage memory RAM
US8874824B2 (en) 2009-06-04 2014-10-28 Memory Technologies, LLC Apparatus and method to share host system RAM with mass storage memory RAM
US11775173B2 (en) 2009-06-04 2023-10-03 Memory Technologies Llc Apparatus and method to share host system RAM with mass storage memory RAM
JP2012252557A (ja) * 2011-06-03 2012-12-20 Mega Chips Corp メモリコントローラ
JP2011210277A (ja) * 2011-06-20 2011-10-20 Toshiba Corp 情報処理装置および情報処理方法
JP2013033402A (ja) * 2011-08-02 2013-02-14 Nec Access Technica Ltd 情報更生装置、メモリ制御システム、情報更生方法およびコンピュータプログラム
US11226771B2 (en) 2012-04-20 2022-01-18 Memory Technologies Llc Managing operational state data in memory module
US11782647B2 (en) 2012-04-20 2023-10-10 Memory Technologies Llc Managing operational state data in memory module
US10042586B2 (en) 2012-04-20 2018-08-07 Memory Technologies Llc Managing operational state data in memory module
US9311226B2 (en) 2012-04-20 2016-04-12 Memory Technologies Llc Managing operational state data of a memory module using host memory in association with state change
KR102290988B1 (ko) * 2015-06-08 2021-08-19 삼성전자주식회사 불휘발성 메모리 모듈 및 그것의 동작 방법
KR20160144562A (ko) * 2015-06-08 2016-12-19 삼성전자주식회사 불휘발성 메모리 모듈 및 그것의 동작 방법
JP2020017262A (ja) * 2018-07-24 2020-01-30 三星電子株式会社Samsung Electronics Co.,Ltd. ソリッドステートドライブ及びそのメタデータアクセス方法
US11249895B2 (en) 2018-10-24 2022-02-15 Tdk Corporation Memory controller and memory system
JP7143735B2 (ja) 2018-11-15 2022-09-29 Tdk株式会社 メモリコントローラ、及びメモリシステム
US11029885B2 (en) 2018-11-15 2021-06-08 Tdk Corporation Memory controller for controlling multiple types of flash memories, and memory system
JP2020086535A (ja) * 2018-11-15 2020-06-04 Tdk株式会社 メモリコントローラ、及びメモリシステム
JP2021140553A (ja) * 2020-03-06 2021-09-16 キオクシア株式会社 メモリシステム及びその制御方法
JP7395388B2 (ja) 2020-03-06 2023-12-11 キオクシア株式会社 メモリシステム及びその制御方法

Also Published As

Publication number Publication date
JP4933268B2 (ja) 2012-05-16
EP1700207A1 (en) 2006-09-13
US20090254776A1 (en) 2009-10-08
CN1902583A (zh) 2007-01-24
KR101029938B1 (ko) 2011-04-19
CN1902583B (zh) 2010-05-12
TW200601151A (en) 2006-01-01
US7962777B2 (en) 2011-06-14
WO2005066773A1 (en) 2005-07-21
US20050160217A1 (en) 2005-07-21
KR20070003808A (ko) 2007-01-05
US7594135B2 (en) 2009-09-22
TWI272536B (en) 2007-02-01
EP1700207B8 (en) 2016-09-14
EP1700207B1 (en) 2016-07-27

Similar Documents

Publication Publication Date Title
JP4933268B2 (ja) フラッシュメモリシステムの起動動作
US9098428B2 (en) Data recovery on cluster failures and ECC enhancements with code word interleaving
US8125825B2 (en) Memory system protected from errors due to read disturbance and reading method thereof
JP4129381B2 (ja) 不揮発性半導体記憶装置
US7573773B2 (en) Flash memory with data refresh triggered by controlled scrub data reads
US8423866B2 (en) Non-volatile memory and method with post-write read and adaptive re-write to manage errors
US7477547B2 (en) Flash memory refresh techniques triggered by controlled scrub data reads
JP4073799B2 (ja) メモリシステム
US7757153B2 (en) Multi-bit memory device and memory system
JP4059472B2 (ja) メモリカード及びメモリコントローラ
US9213601B2 (en) Adaptive data re-compaction after post-write read verification operations
US20070245067A1 (en) Cycle count storage systems
JP2013514602A (ja) アトミックプログラムシーケンスおよび書き込みアボート検出を伴う不揮発性メモリおよび方法
KR20100033507A (ko) 새로운 불량 블록 검출
US20140115419A1 (en) Memory system that detects bit errors due to read disturbance and methods thereof
EP2135251B1 (en) Flash memory refresh techniques triggered by controlled scrub data reads
US20060143368A1 (en) Method for using a multi-bit cell flash device in a system not designed for the device
JP4158526B2 (ja) メモリカード及びメモリへのデータ書き込み方法
JP2008251154A (ja) 不揮発性半導体記憶装置
WO2007121025A1 (en) Cycle count storage methods and systems
JP2004030849A (ja) データの一部書き換え機能を有する半導体不揮発性メモリ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071207

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110316

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110329

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110615

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110622

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110929

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120216

R150 Certificate of patent or registration of utility model

Ref document number: 4933268

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

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

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

Free format text: PAYMENT UNTIL: 20150224

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250