(EEpromシステム)
本発明の種々の特徴が盛り込まれているコンピュータシステムが一般的に図1Aに示されている。典型的なコンピュータシステムはバスライン23に接続されているマイクロプロセッサ21、それにより主システムメモリ25にランダムアクセスすることができ、そして少なくとも1または2以上の入出力装置27、例えばキーボード、モニタ、モデム等々が設けられている。典型的なコンピュータシステムバス23に接続されている他の主たるコンピュータの要素は大量の長期間使用可能な不揮発性メモリ29である。典型的にそのようなメモリは10メガバイトのデータ蓄積能力をもつディスク駆動システムである。データは、システムの中の揮発性メモリ25の中に容易に引き出されて利用され、容易に補充されたり、または変えられたり、変更されたりする。
本発明の一つの態様は、前記のようなディスクドライブのシステムをある半導体メモリに変えることであるが、その際に不揮発性,メモリへのデータの消去および再書込の容易性,アクセス速度,コストおよび信頼性を犠牲にしないことである。これは電気的に消去可能でありプログラム可能なリードオンリーメモリ(EEprom)の半導体回路チップを用いることによって、完成される。この形式のメモリはハードディスクで磁気的なメモリ媒体を駆動するものに比較して、動作電力が少なく、非常に軽量という付加的な利点を備えるものであり、これにより電池で動作させられる可搬型のコンピュータに適しているということができる。
全体の記憶装置29はコンピュータのシステムバス23に接続されているメモリコントローラ31とEEpromの集積回路チップのアレイ33から構成されている。データと命令はコントローラ31からシリアルデータ線35を介して一義的にEEpromアレイ33に通信される。同様にして、データとステータス信号は、EEprom33からコントローラ30にシリアルデータ線37を介して通信される。図1Aにはコントローラ31とEEpromアレイ33間のその他の制御やステータス回路は示されていない。
図1Bを参照すると、コントローラ31は、好ましくは一つの集積回路チップ上に形成されている。システムバス23の一部であるシステムアドレスとデータバス39はシ、ステム制御線41に接続されており、そのシステム制御線41は読込み,書込みおよにその他通常のコンピュータシステム制御線を含んでいる。
EEpromアレイ33はEEpromの集積回路チップ43、45、47等々を複数個含んでいる。それぞれはインタフェース回路40からのそれぞれのチップセレクトおよびイネーブル線49、51、53を含んでいる。インタフェース回路40は、さらに回路57とシリアルデータ線35、37とのインタフェースとして働く。EEpromチップ43、45、47に書込まれるか、または読出されるメモリの位置アドレスとデータはバス55、論理およびレジスタ回路57、さらに他のバス59を通してメモリチップ43、45、47等々に伝達される。
図1Aと図1Bに示されている全体のメモリ29は、1枚のプリント回路カードに適当なメモリの大きさで製造されている。図1Bの種々のシステムバス39と41は他のコンピュータシステムとともに、そのようなカードの接続ピンに接続されている。さらに前記カードやその要素には種々の標準的な電力供給電圧(図示せず)が接続されている。
大量のメモリのためには、一つのアレイ33に形成されているものでは十分でない場合がありえる。そのような場合には、制御チップ31のシリアルデータ線35、37に付加的なEEpromアレイを接続することができる。このことは好ましくは一つのプリント回路カードによって行なわれることが望ましいのであるが、それをするために十分なスペースのない場合には、1またはそれ以上のEEpromアレイを第2のプリント回路カードの上に形成し、そしてそれを物理的に第1のものの上に設けるか、設けてそれを共通のコントローラチップ31に接続することによって行なうことができる。
(メモリ構造の消去)
蓄積されるデータがファイルまたはブロックとして行なわれるシステムデザインにおいては、そのデータは定期的に改定されたり、または新しい情報が挿入される必要がある。そして、もはや不必要となった情報の上に、さらに書込みを行なうことにより、追加の情報を収容することが望まれる場合がある。フラッシュEEpromメモリにおいては、メモリセルはまず初めに情報を蓄積する前に消される必要がある。すなわち、このことは書込み(またはプログラム)の操作の前に常に消去の動作が先行されるということである。
従来のフラッシュ消去メモリ装置においては、消去の動作はいくつかの方法があり、その一つより行なわれる。例えば、インテル・コーポレイションの27F−256、CMOSはフラッシュEEpromにおいては、全体のチップが一時に消去される。もしチップの中の情報の全てが消去されるべきではないときには、まず初めに一時的にその情報が救済されなくてはならない。そしてそれは、他のメモリ(典型的にはRAM)に書込まれる。そしてその情報はその装置に再度プログラムすることによって、不揮発性のフラッシュ消去メモリの中に回復される。これは時間を要することであり、費用もかかり、作業空間も必要である。
他の装置、例えばシーク・テクノロジー・インコーポレイテッドのモデル48512フラッシュEEpromチップにおいては、メモリはブロック(またはセクタ)に分割されており、それらは別々に分離して消去可能である。しかしながら、毎回一つずつ行なわなければならない。希望するセクタの選択により、消去の段階に入り、指定された領域が消去される。一時的な記憶装置の必要はなくなるのであるが、種々のメモリ領域の消去は依然として時間がかかる逐次作業を必要とする。
本発明においては、フラッシュEEpromメモリはいくつかのセクタに分割され、そこにおいてそのセクタに含まれるセルは同時に消去することができる。各々のセクタは、別々にアドレスされ、そして選択的に消去される。最も重要な特徴は一緒に消去すべきいくつかのセクタの組合せを選択できることである。これにより、各々を独立して消去するという従来の技術に見られるものに比較してより早い消去システムを提供することができるのである。
図2は、消去のために選ばれたいくつかのセクタを略図示している。一つのフラッシュEEpromシステムは、例えば、201、203、205のように1またはそれ以上のフラッシュEEpromチップを含んでいる。それらは線209を介してコントローラ31と通信している。典型的にはコントローラ31それ自身は図示されていないマイクロプロセサシステムと通信している。各フラッシュEEpromチップの中のメモリはセクタに分離されており、その一つのセクタの中の全ての記憶セルは同時に消去できる。使用者に利用可能なものとして、例えば各々のセクタが512バイト(すなわち512×8セル)あり、一つのチップは1024セクタを持っている。各セクタは独立してアドレス可能に分割されており、そして例えばセクタに211、213、215、217等のように複数のセクタが消去可能に選択される。図2に図示されているように、選択されたセクタは一つのEEpromチップに限られるか、またはシステム中のいくつかのチップ内に分散させられることができる。選ばれたセクタは同時に消去されるであろう。この能力は、この発明によるメモリシステムに従来の構造のものよりも、より早い操作を許容するものである。
図3Aは、フラッシュEEprom(例えば図2のチップ201など)で、1またはそれ以上のセクタが消去のために選択または選択されなかった状態を示すブロックダイヤグラムである。実際上は各セクタ、例えば211、または213が各セクタに関連して設けられている、例えば211、213のような消去可能レジスタの状態の設定または、設定によりタグをつけるとか選択されるかによって、各々のセクタ221、223が選択される。選択と引き続く消去動作は、コントローラ31(図2参照)のコントロールの下に行なわれる。回路220はコントローラ31と複数の線209によって通信させられている。コントロールからのコマンド情報は直列インタフェース227を介してコマンドレジスタ225によって、回路220内で捕捉される。そしてそれは、コマンドデコーダ229によってデコードされ、コマンドデコーダ229は種々の制御信号を出力する。同様にアドレス情報はアドレスレジスタ231によって補足され、そしてアドレスデコーダ233によってデコーダされる。
一例として、セクタ211を消去のために選択するためには、前記コントローラはセクタ211のアドレスを回路220に送る。このアドレスは、線235の中にデコードされ、そしてそれは、レジスタ221の出力239をハイ(HIGH)にセットするためにイネーブルバス237の消去イネーブル信号と共同して組み合わせて用いられる。これにより、セクタ211は引き続く消去動作が可能になる。同様にして、もしセクタ213も同様に消去されるべきであると要求されているときは、レジスタ223のその関連するレジスタ23もハイにセットされるであろう。
図3Bは、レジスタ221または223の構造をより詳細に示してある。消去イネーブルレジスタ221はSET/RESETラッチである。そのセット入力端子241はアドレスデコード線235によってゲートされたバス237の消去イネーブル信号セットから得られる。同様にして、リセット入力243は線235中のアドレスデコードによってゲートされるバス237中の消去イネーブル信号をクリアするものから得られる。このようにして消去イネーブル信号または消去イネーブル信号をクリアする信号がすべてのセクタに発生させられたときにアドレスされたセクタのみにその信号が有効となる。
全ての消去されるべきセクタが選択された後にコントローラは回路220、同様に全てのグローバル消去コマンドが251によって現れているときに線209に沿って消去のための高電圧が発生させられる。かくしてその装置は、全ての選択されたセクタ(例えばセクタ211と213)が同時に消去されるでろう。チップ内の希望するセクタが消去されることに加えて本発明による構造では、同時消去のために異なる種類のチップ上のセクタの選択を許容している。
図4の(1)〜(11)は、図3Aの回路220に関連して用いられるアルゴリズムを図示している。図4の(1)でコントローラは回路220の中でデコードされた消去されるべきセクタに関連させられている消去イネーブルレジスタにアドレスをシフトさせる。図4の(2)においてコントローラはアドレスされたセクタの消去イネーブルレジスタへアドレスデコードされた信号をラッチするために用いられる消去イネーブルコマンドをセットするためにデコードする。このタグはそのセクタの引き続く消去のためである。図4の(3)において、もしそれ以上のより多くのセクタがタグが付されるべきであるときには消去されるべき全てのセクタにタグが付加されるまで図4の(1)から図4の(2)に示されている関連して記述されている操作を繰り返す。消去されるべき全てのセクタにタグが付された後にコントローラは図4の(4)に示されている消去のサイクルを開始させる。
最適化された消去の構成は同時継続中の米国特許出願に開示されている。それらは同時出願継続中の米国特許出願第204,175号(特許文献1)でエリヤホウ ハラリ博士により1988年6月8日に出願されたものと本出願と同時に、サンジャイ メハロトラとハラリ博士によって出願された「多状態EEprom読み書き回路およびその技術」に示されているものである。フラッシュEEpromセルは消去パルスを印加することによって消去され、引続き読みによりそのセルが消去されて消去状態にあるかどうかということが検証される。もしそうでない場合、そのセルが消された状態にあると検証されるまでパルスの印加と検証が繰り返される。この制御された方法によって消去することによりセルはEEpromを老化させるかまたはプログラムを困難にするであろう過剰消去にさらされないようにする。
選択されたセクタのグループが消去サイクルにあるときに他のものはより早く消去された状態に達することもある。本発明の他の重要な特徴は選択されたグループの中から消去用に検証されたセクタを除去する能力であり、これにより過剰消去を防いでいる。
図4(4)を再度参照すると、全ての消去されるべきセクタにタグが付されるとコントローラはタグが付されたセクタのグループの消去サイクルを開始する。図4の(5)では、消去が行なわれるべきタグEEpromチップ中にグローバル消去イネーブルと呼ばれるグローバルコマンドをシフトさせる。これは図4の(5)において、コントローラが一定の持続する期間、一定の値だけ消去電圧(VE)を上げるということになる。コントローラはこの電圧を消去期間経過の終わりに低下させる。図4の(6)において、コントローラは消去のために選択されたセクタの読み出し検証を実行する。図4の(7)において、セクタのいずれもが検証されない場合には図4の(5)〜(7)に図示されているシーケンスが繰り返される。図4の(8)から図4の(9)において、もし1または2以上のセクタが消去されたと検証されたときは、それらはそのシーケンスから取り出される。同様に図3Aを参照すると、このことは各検証されたセクタに対応するコントローラのアドレスをバス237の中の消去コマンドをクリアすることによって、消去可能なレジスタを低電圧にする。図4の(5)から(10)に示されているシーケンスは図4の(11)に示されているようにそのグループが消去されたと検証されるまで繰り返される。その消去サイクルの完了によってコントローラは不動作状態(NOP)命令に移行し、そして、グローバル消去可能コマンドは引き上げられて誤った消去から保護される。
どのセクタを消去すべきであるか、消去すべきでないかを選択する能力は、どの消去を止めることが有効であるかと同様に有効である。これにより遅く消去されるセクタより前に消去が完了されたものが消去のシーケンスから分離されてその装置により以上のストレスを与えることから保護することができる。このことにより、システムの信頼性を向上させることができるであろう。もしセクタが良くないものであるとき、あるいはある理由によって使用できないときそのセクタをとばし、そのセクタにおいて消去が起こらないようにすることに利点がある。例えばもしあるセクタが欠陥をもっていて回路の短絡があったならば、それはより多くの電力を消去するであろう。本発明によっては消去サイクルをとばすことにより、そのチップの中で消去に必要とする電力を減少させることができるという有意義なシステムの利点を得ることができる。
その装置の中で消去されるべきセクタを選びだす能力を持つことはそのシステムの電力消費を少なくするという他の配慮に繋がる。本発明における消去構造の弾力性により、そのシステムの電力の能力にしたがって、消去の要求を採用することができる。これは、このシステムをソフトウエアによって、異なった消去の状態を与えるか、または他のシステムとの間の基本的な構造によって与えるかによって成し遂げられるであろう。それは例えばラップトップコンピュータのようなシステムで電圧のレベルを監視することによって消去の量を変化するようにコントローラにさせることもできるだろう。
本発明におけるシステムのさらに他の動作の能力は、すべての消去イネーブルラッチをクリアするフラッシュEEpromチップにリセットコマンドを発する能力であり、そして消去サイクルがさらに発生しないようにすることである。これは図3Aおよび図3Bに線261のリセット信号によって図示されている。全てのチップに不変的にこの作業を行なうことによって全ての消去イネーブルレジスタをリセットする時間を短くすることができるであろう。
その他の付加的な能力はチップセレクトに無関係に消去動作をする能力をもつことである。あるメモリチップにおいて消去動作が開始されるとコントローラは他のメモリチップにアクセスしてそれらの読み、書きの動作をさせることができる。加得るに消去装置の消去を行なっているということが選択され、そして次の消去のためのコマンドのアドレスを蓄積することもできる。
(欠陥マッピング)
メモリ装置における物理的な欠陥は困難な誤動作を巻き起こす。データは、欠陥のあるセルに蓄積される度に破壊されてしまう。従来のメモリ装置、例えばRAMやディスクにおいては、製造過程で生じるあらゆる物理的な欠陥は工場において修正されている。RAMにおいては、予備の冗長メモリセルがチップに設けられていて、それが欠陥セルの代わりに接続される。従来のディスクドライブ装置において媒体が不完全であるときには、欠陥の問題となりやすかった。これらの問題を解決するために製造業者は存在するこれらの欠陥についての様々な方法を案出しており、そしてもっとも通常用いられるものはセクタの欠陥のマッピングである。通常のディスクシステムにおいては、媒体はシリンダとセクタに分割されている。セクタはデータが蓄積される基本単位である。システムにおいて、種々のセクタに分けられ、悪いものであるとマークをつけられたものは、そのシステムにおいては使用されないようにする。これは、種々の方法によって実現されている。欠陥マップのテーブルが使用されるディスクの特定の位置に設けられており、インターフェイスコントローラを介して利用される。さらに、欠陥のある悪いセクタは物理的に特殊なIDが施されて、IDとフラッグマーカーが付されている。欠陥のあるものがアドレスされたときは、そのデータは通常は他の代替位置に配置されている。この代わりのセクタの要請のために、余分なセクタがある間隔で、またはある位置離れて設けられている。これは、メモリの容量を減少させるものであり、どのように代わりのセクタを設けられているかという問題を提供している。
本発明の一つの重要な応用は、フラッシュEEpromチップのアレイによって実現されるシステムによって、通常のディスク記憶装置を置き換えることである。このEEpromシステムは従来のディスクと同等、またはそれ以上であるように設定することが好ましく、「固体ディスク」とみなすことができる。
そのような固体メモリ装置により作られた「ディスク」システムにおいては、欠陥を効率的に処理するために、低価格でそれが成し遂げられるという配慮が必要となる。本発明の他の重要な特徴は、より多くのメモリを可能な限り保存することができるように誤り訂正を可能にすることである。現実問題として、それはセルごとに欠陥セルが捜し出されることにより全体のセクタ,例えば(通常512バイト)において、欠陥が起こる度に捨ててしまうことをなくすことである。この提案は特にフラッシュEEprom媒体に適している。なぜならば、大多数の誤りはビットの誤りとして起こり、従来のディスク媒体に通常みられるストリームが長い近接した欠陥ではないことによる。
RAMと磁気ディスクの両方の先行技術においては、一度その装置が工場から出荷されるとそこでは、通常の動作の後に現れる物理的欠陥から生ずるハードの誤りを置き換えるための手段がほとんどもしくは全くないことである。そのために、欠陥の訂正は主として誤り訂正コード(ECC)を用いることに依存して行なわれている。
フラッシュEEprom装置の性質上、書込み/消去の回数が増加するにしたがって、セルの欠陥が次第に増加することが予想できる。使用して蓄積されるハードの誤りが最終的にはECCを圧倒してしまい、その装置を使用不能なものにしてしまうのである。本発明の一つの重要な特徴は、そのシステムのハードの誤りが発生するごとに、そのシステムのハードの誤りを訂正するという能力をもっていることである。また、読出し操作の期間においても、欠陥セルが発見され、そしてECCにより位置づけられる。欠陥のセルが特定されると直ちにコントローラはその欠陥セルを通常はそれと同じセクタに存在する空きセルによって置き換えるための欠陥マッピングを供給するであろう。この動的なハードの誤りの訂正は、通常の誤り訂正スキームに加えて装置の寿命を有効に引き延ばすことができる。
本発明の他の特徴は、誤り訂正へのアプローチに適していることである。誤り訂正コード(ECC)は常時ソフトの誤りを訂正するとともに、発生するであろうハードの誤りの訂正に利用される。ハードの誤りが検出されるとすぐに、欠陥マッピングはその欠陥セルをそれの同じセクタブロックに存在する予備のセルと置き換えるために使用される。欠陥セルの数がその特定のセクタのための欠陥マッピングの能力を越えた場合においてのみ、その全体のセクタは、通常のディスクシステムのように置き換えられる。このスキームにより、信用性を損なうことなく最小の損失で食い止めることができる。
図5は、セルをリマッピングするスキームのメモリ構造を図示したものである。前述したように、このフラッシュEEpromメモリはセクタに分割されており、各セクタに属するセルは同時に消去可能である。典型的なセクタ401のメモリ構造は、データ部403と予備(または影)部405に分けられている。データ部403はユーザによって使用可能なメモリ空間である。予備部405はさらに欠陥データの代替部領域407、欠陥マッピング領域409、ヘッダ領域411、およびECCと他の領域413に分けられている。これらの領域は、コントローラにより、ヘッダやECC等のように欠陥領域や他のオーバーヘッド情報を操作するために使用することもできる情報を含む。
セクタの中で、一つの欠陥セルが発見される度に欠陥データ領域の代替部407の中の一つの良いセルが欠陥セルと指定されたデータをバックアップするために割当てられる。かくして、もし欠陥セルにデータが誤って記憶されたとしても、バックアップセルの中には誤りのないコピーが記憶される。欠陥セルとバックアップセルのアドレスは欠陥マップ409の中の欠陥ポインタに記憶される。
ユーザデータ領域403と予備部405間は、厳格に区別される必要がないというように理解されたい。各々に割当られた領域の相対的な大きさは論理的に再割当することができる。さらにまた、種々の領域のグループ分けは、主として議論のために必要であって、物理的に必要なものではない。例えば欠陥データ領域の代替部407は、予備部405の中にそれが専有する領域はユーザーは利用できないものであることを示すだけのものである。
読出し動作において、コントローラは最初にヘッダ、欠陥マップ、それから代替欠陥データ部分を読出す。その後実際のデータを読む。それは欠陥マップによって欠陥セルのトラックと代替データの位置を保っている。欠陥セルに遭遇するために、コントローラはその不良データを欠陥代替セルの良いデータで代用する。
図6は、好適な実施例におけるの読出データパス制御を図示している。メモリ装置33はコントローラ31の制御下にある複数のフラッシュEEpromチップを含んでいる。コントローラ31それ自体は、マイクロプロセッサ(図示せず)の制御下にあるマイクロプロセッサシステムの一部を形成している。セクタの読出しを開始するにあたり、マイクロプロセッサはコントローラ中のアドレス発生器503に読出し操作を開始するためのアドレスをロードする。この情報は、マイクロプロセッサのインターフェイスポート505を介してロードされる。それから、マイクロプロセサはDMAコントローラ507にバッファメモリまたはデータリードが送られるべきアドレスバスのスタート位置をロードする。それからマイクロプロセッサはヘッダの情報(ヘッド、シリンダ、セクタ)を保持レジスタファイル509にロードする。最終的にマイクロプロセッサはコマンドシーケンサ511にコントローラ31への制御前にリードコマンドをロードする。
制御開始後に、コントローラ31はまず初めにセクタのヘッダにアドレスし、そしてユーザが指定したアドレスの位置でメモリがアクセスされたことを検証する。これは次のシーケンスによって実現される。コントローラはメモリ装置33の中の一つのメモリチップ(チップセレクト)を選択し、そしてヘッダ領域のアドレスをアドレス発生器503の出力からメモリ装置33の選択されたメモリへシフトする。コントローラはマルチプレクサ513をスイッチし、そしてメモリ装置33にリードコマンド出力をシフトする。それからメモリ装置は送られたアドレスを読み、そしてコントローラにアドレスされたセクタからの直列データの送信を開始する。コントローラ中のレシーバ515はこのデータを受け、そしてそれを並列形式にする。一つの実施形態においては、1バイト(8ビット)が一度にコンパイルされ、マイクロプロセッサによって保持レジスタファイル509に予め記憶されたヘッダ情報と受信したデータとを比較する。もし、その比較の結果が正しければ、正しい情報、正しい位置がベリファイ(検証)されて動作は継続する。
次にコントローラ31は欠陥ポインタを読出し、これらの不良アドレスの位置をホールディングレジスタファイル509にロードする。これにコントローラの欠陥データの読出しが続き、その欠陥データの代替はそれが書込まれたときに、その誤ったビットを置き換えるために書込まれているものであった。代替ビットは、欠陥データの代替ファイル517の中に記憶されており、それはデータビットが読出されるときにアクセスされる。
ヘッダがマッチしており、そして欠陥ポインタと代替ビットのロードが完了すると、コントローラは読まれるべき希望するセクタの最低のアドレスのシフトアウトを開始する。メモリ装置33の中のセクタからのデータはコントローラチップ31に移送される。受信機515はそのデータを並列形式に変換し、各バイトを一時的なホルダであるFIFO519へコントローラから送り出されるべく移送する。
パイプライン構造が受信機515から、FIFO519へコントローラを開始してデータがゲートされるときの有効な処理能力を提供するために用いられる。各々のデータビットがメモリから受信されたときに、コントローラは送られるべきデータのアドレス(アドレス発生器507に蓄積されたもの)を欠陥ポインタマップ(レジスタファイル509に蓄積されたもの)と比較を続ける。もし、比較器521の出力のマッチにより、そのアドレスが悪い位置にあると決定されると、受信器515により受信されたメモリからの悪いビットは、その位置の良いビットと置き換えられる。良いビットは欠陥データ代替ファイルから得られる。これは受信機515からの悪いビットの代わりに、欠陥データ代替ファイルからの良いビットを受信するようにマルチプレクサ523をスイッチングすることによってなされる。FIFOの中に訂正されたデータがあるときに、それはバッファメモリまたはシステムメモリ(図示せず)へ送られるべき状態にある。そのデータはコントローラのFIFO519からコントローラのDMAコントローラ507によってシステムメモリへ送られる。このコントローラ507はそれからリクエストしてシステムバスへのアクセスを得、そして一つのアドレスを出し、そしてデータを出力インタフェース255経由でゲートしてシステムバスへ出す。これは各バイトがFIFO519へロードすることによってなされる。訂正されたデータがFIFOにロードされると、それはまたECCハードウエア527にもゲートされ、そこでデータファイルはECCによって処理される。
このように前述した方法により、メモリ装置33から読まれたデータはコントローラ31を介して前記システムに送り出されるべくゲートされる。このプロセスはアドレスされたデータの最後のビットが移送されるまで続く。
前もって検出された欠陥セルの欠陥マッピングにもかかわらず、最後のマッピング移行に新しいハードの誤りが発生するかもしれない。ダイナミック欠陥マッピングが恒久的に新しい欠陥セルを押し出すにしたがって欠陥マッピングの間に発生するであろう最新のハードの誤りはECCによって十分に取り扱われる。データがコントローラ31によってゲートされるにしたがってコントローラは蓄積されていた値がちょうど計算された残りの値とマッチするかどうかを決定するために、ECCビットをECCハードウエア227へゲートとして入れる。もしそれがマッチすればシステムメモリに移送されたデータは正しいものであったとして、読み込み動作は完成させられた。しかしながら、もしECCレジスタに誤りがあったならば、システムメモリに送られるデータについての訂正計算が行なわれる。そして訂正されたデータが再送信される。誤りを計算する方法はハードウエアでもソフトウエアでも通常の方法によって行なわれる。ECCは誤りに原因する欠陥セルについての計算と位置出しをすることができる。これはコントローラ31によって欠陥セルが発見されたセクタに関連して欠陥マップを更新するのに用いられる。このようにしてハードエラーは常にフラッシュEEpromシステムから除かれる。
図7は、好適な実施例における書込みデータパス制御を図示している。書込みの順序の最初の部分は既に説明した読みのシーケンスと共通している。マイクロプロセッサはまず初めに読みのシーケンスと同様にメモリ装置33とDMAのためのアドレスポインタをロードする。それは望まれるヘッダをアドレス発生器503にロードし、そしてコマンドキューをコマンドシーケンサ511にロードする。コマンドキューはリードヘッダコマンドファーストと一緒にロードされる。その後、制御はコントローラ31に渡される。コントローラはそれからアドレスとコマンドをメモリ装置33にリードシーケンスと同様にゲートする。メモリ装置は、ヘッダデータをコントローラの受信機515を介して戻す。コントローラは受信したヘッダデータを予期された値(ホールディングレジスタ509に蓄積されていたもの)と比較する。もし比較の結果が正しかったならば、正常な位置がベリファイされたものであって、シーケンスが連続する。それからコントローラはメモリ装置33からの欠陥アドレスポインタをホールディングレジスタファイル509にロードし、代替データを欠陥データ代替ファイル527へロードする。
次にコントローラはシステムメモリ(図示せず)から書込みデータのフェッチを開始する。コントローラはこれをシステムバスにアクセスすることにより行い、記憶またはバスアドレスを出力し、リードサイクルを行なう。コントローラはデータをインプット入力インタフェース603を介してFIFO601に引き込む。そしてコントローラはそれから、スターティングセクタのアドレス(最も低いバイトのアドレス)をアドレス発生器503から選ばれたメモリ装置33へシフトする。これはFIFO601からのデータによって追従される。これらのデータはマルチプレクサ605と513を通じて送られ、そしてメモリ装置33に送り出される前に直列フォーマットに変換される。このシーケンスは書きサイクルのためのすべてのバイトが選ばれたメモリにロードされるまで続く。
データがFIFO601からゲートされて、選択されたメモリ33にゲートされるときに効果的な有効な処理能力を提供するためにパイプライン構造が採用されている。データはFIFO601からゲートされてECCハードウエア527へ送られ、ここにおいて、残りの値はECCの中で計算されるであろう。次のステージにおいてデータがマルチプレクサ605と513を介してメモリ装置に送られているときに比較器521はアドレス発生器503からのそのアドレスをホールディングレジスタファイル509にある欠陥ポインタのアドレスと比較する。マッチが発生したときは、欠陥位置が書込まれようとしていることを示し、コントローラはこのビットを欠陥データ代替ファイル517へ記憶する。同時にメモリに送られる全ての誤りビットは0として送られるであろう。
選ばれたメモリ装置の中に書込みサイクルのバイトがロードされた後に、コントローラはプログラムコマンドをメモリ装置に発生して書込みサイクルを開始する。フラッシュEEprom装置のための書込み操作の理想的な構造は先に引用した同時継続中の米国特許出願第204,175号(特許文献1)であって、一つは多状態EEpromの読み、書き回路と技術と呼ばれているものに示されており、前記関連する部分をここで参考として挙げる。簡単に言えば、書込みのサイクルの間中にコントローラはプログラム(または書込み)電圧パルスを供給していることである。これは、全てのビットのプログラムが適当であるかということを決定するためのベリファイ読みが続く。もし、そのビットがベリファイされなかったときは、コントローラはプログラム/ベリファイサイクルを全てのビットが正しくプログラムされるまで繰り返す。
もし、一つのビットがプログラム/ベリファイサイクルを延ばした後でもベリファイに失敗したときは、コントローラはそのビットを欠陥ビットであると指定し、そしてそれにしたがって欠陥マップを更新するであろう。更新は欠陥セルが検出されるや否や、ダイナミックに行なわれる。同様な操作が消去ベリファイの失敗の場合においても、採用される。
全てのビットがプログラムされてベリファイされた後に、コントローラはFIFO601から次のデータビットをロードし、アドレスセクタの中の次の位置をアドレスする。そしてコントローラはそれから他のプログラム/ベリファイシーケンスを次のバイトについて行なう。このシーケンスはそのセクタの最後のデータまで、連続して行なわれる。一度このことが発生するとセクタ(図5参照)に関連する影のメモリ(ヘッダ領域)をアドレスし、そしてECCレジスタの内容をこの領域に書込む。
さらに、欠陥があるとしてフラグがたてられそして欠陥データ代替ファイル516の中に蓄積されたビットの集合は代替欠陥データ位置(図5参照)に書き込まれ、これによって引き続く読みに使用される良いビットの価値を保つ。一度これらのデータグループが書込まれ、そして検証されるとそのセクタの書込みは完全なものと考えられる。
この発明は全体のセクタの欠陥をマッピングする規定をもっているが、しかしそれはその特定のセクタの欠陥セクタマッピング能力を越える欠陥が存在した後のことである。各セクタの中における欠陥セルの数としてカウントが保存される。あるセクタの中の数がある一定量を越えたときに、コントローラはそのセクタは欠陥としてそれを他のセクタにマップする。関連するセクタの欠陥ポインタは欠陥セクタマップの中に保存されるであろう。セクタ欠陥マップは最初の欠陥セクタにおいて、その余分な領域が欠陥がない場合において設け、そのセクタの中に設けられる。しかしながら、セクタのデータ領域が大量の欠陥が発生した場合においては、その余白の領域も同時に欠陥が多くなる可能性が強い。
そのような理由により、他の実施例においては、コントローラに保持される他のメモリの中に、セクタマップを位置させることが好ましい。メモリはコントローラのハードウエアか、またはフラッシュEEpromのメモリから離れた部分に位置させられるであろう。コントローラがアクセスで多領域のアドレスを与えられると、そのコントローラはこのアドレスをセクタ欠陥マップと比較する。もし、マッチが起こるならば欠陥セクタへのアクセスが拒否され、そして欠陥マップの中に存在する代替アドレスが入力され、そして対応する代替セクタが代わりにアクセスされる。
さらに他の具体例においてはセクタの再マッピングはマイクロプロセッサによって遂行される。マイクロプロセッサは入ってきたアドレスとアドレスを見てそれをセクタ欠陥マップと比較する。もしマッチがあれば、それはコントローラにコマンドを発生する代わりに、新しいコマンドとして他の位置を代替する。
固体ディスクのより速いスピードから離れて、さらに他の利点は、機械的な部分が存在しないということである。ディスク駆動に本来的に存在する回転性に原因する長いサーチ時間は存在しない。さらにこれに加得るに、長い同期時間、同期マークの検出時間、書込みギャップ等も必要でない。かくして、どこに読出されるべきデータが存在するか、またはどこに書込まれるべきであるかという位置にアクセスするために必要なオーバーヘッド時間はより少なくなる。これらの単純性、および無理がないということは、オーバーヘッドを少なくしたより速いシステムとして現れる。加得るに、ファイルはメモリの中に希望する任意のアドレスの順序で配列され、そしてコントローラには必要なデータにどうして得るかということが必要なだけである。
本発明のさらに他の特徴は欠陥マッピングは、セクタにまたはセクタからの移動させられるデータの流れを妨げる必要がない状態で構成されていることである。ブロック中で誤りを含むデータはそれに係わらず返送され、そしてそれは後に訂正される。順次アドレスを保存することによって、それ自身高い速い速度を得ることができるであろう。さらにまた、それはその装置の読み書きのデータパスにおける効果的なパイプライン構造の実現を許容する。
(書込みキャッシュシステム)
キャッシュメモリは一般的に遅いアクセスの装置のシステムの能力の速度を上げるために用いられている。例えば、コンピュータシステムにおいてディスク記憶装置からのデータのアクセスは遅い。そしてもしデータがより速いラムRAMから得られるならば、スピードはより速くなるであろう。典型的に、RAMのシステムの部分はディスクからもっとも最近にアクセスされたものを仮に保持するためにキャッシュが使用されている。次にそのデータが要るときには遅いディスクの代わりにより速いキャッシュからそれを得ることができる。そのシステムは、同じデータが繰り返されて使用されるような状況において、うまく動作する。これは最も多くの構成やプログラムにおいて見られるものであり、これはコンピュータというものはプログラムを走らせているときには、非常に狭い記憶領域でのみ働く傾向があるからである。キャッシングの他の例は通常より安いが、しかし遅いDRAMにアクセスする時間を速くするために、より速いSRAMキャッシュを利用することである。
ほとんどの従来のキャッシュの設計は、メモリからの読み取りのスピードアップのための読出し(リード)キャッシュである。ある状況においては、メモリに書き込む速度を上げるために、書込みキャッシュが使用される。しかしながら、キャッシュには同時に書込まれるのに対して、システムメモリ(例えばディスク)への書込みの場合においては、データはそれらが発生するごとにその都度直接書込まれる。これは電力がなくなったときに更新され、ファイルが無くなってしまうという懸念のために、このことが成されるのである。もし書込みデータがキャッシュメモリ(揮発性)にのみに記憶されているときに、電力が無くなるということは新しく更新されたデータが、システムメモリ(不揮発性)の中の古いデータを更新する前に、キャッシュメモリから更新されたファイルがなくなってしまうということである。これらのファイルが引き続き利用されるときには、そのシステムは古いデータに基づいて操作されるということになるであろう。主メモリを毎回書き込む必要性は、キャッシュ機構を書込みのために壊してしまうことになる。読出しキャッシュにおいては、この懸念は全くなく、キャッシュからなくなるであろうデータはディスクでバックアップされているからである。
本発明においては、フラッシュEEpromのシステムは従来のディスク形の記憶装置をもつシステムに置き換えられて用いられる。しかしながら、フラッシュEEpromは過度のプログラム(消去サイクル)による消耗に曝されている。同時継続中の米国特許出願第204,175号(特許文献1),発明の名称「多状態のEEprom読みおよび書きサーキットとその技術」、サンジャイ・メハロポラとエリヤホウ・ハラリ博士により本発明と同時に出願された願書に開示されている改良されたフラッシュEEpromメモリ装置においてさえ、耐久力の限界はほぼ106 のプログラム/消去サイクルに限定されている。この装置の寿命を10年に引き延ばして考えてみると5分間に1回ずつの消去に限定される。これは通常のコンピュータの使用においては限界的なものである。
この問題を解決するために、キャッシュメモリシステムは、非常に多くのプログラム/消去サイクルに耐えることから切り離すことができるように新規な方法で用いられる。キャッシュの第1次的な機能は、フラッシュEEpromメモリに書込むために用いられ、従来のキャッシュの使用とは違ってフラッシュEEpromメモリからの読みには用いない。フラッシュEEpromメモリに書込む代わりに、毎回データは更新され、そのデータはフラッシュEEpromメモリへ送られる前に、キャッシュの中で、数回動作させられるであろう。これにより、フラッシュEEpromメモリへの書込みの回数を減らすことができる。さらにまた、主としてより速いキャッシュメモリの中に書込むことにより、より遅いフラッシュEEpromへの書込みの回数を減らし、全体のシステムにおける書込み効率を増強させることができるという利点が得られる。
本発明を実現するにあたって、比較的小さい大きさのキャッシュメモリが極めて有効である。これは電源断の間に揮発性のキャッシュメモリの中におけるデータ損失の問題を克服するのに役立つ。そのようなときには、キャッシュメモリを十分長い時間、十分な電源で維持することと、フラッシュEEpromメモリの中に特別に予約された空間である不揮発性メモリの中にそれらのデータを詰め込んでおくということもできる。このシステムにおける電力断、または電力障害において、書込みキャッシュシステムは全体のシステムから切り離されて、準備されていた再充電可能な電力供給はキャッシュシステムの電源とフラッシュEEpromメモリに準備された空間への電源にのみ利用される。
図8は、本発明による装置のコントローラの一部を形成するキャッシュシステム701を略図的に示した図である。キャッシュシステム701の一方側はフラッシュEEpromメモリアレイ33に接続されている。一方側において、それはマイクロプロセッサシステム(図示せず)にホストインタフェース703を介して接続されている。このキャッシュシステム708は2つのメモリをもっている。1つは一時的に書込みデータファイルを保持するキャッシュメモリ705である。他はキャッシュメモリ705の中に保持されるデータファイルに関連する情報を記憶するためのタグメモリ709である。メモリタイミング/コントロール回路713はキャッシュメモリ705からフラッシュEEpromメモリ33へのデータファイルの書込みを制御する。メモリコントロール回路713はタグメモリの中に蓄積されている情報と同様にマイクロプロセッサシステムの電源装置にホストインタフェース703と線717を介して接続されている電力検出入力715に応答させられる。マイクロプロセッサシステムの電力の劣化はメモリコントロール回路713によって検出され、それは揮発性のキャッシュメモリ705の中のデータファイルの全てを不揮発性のフラッシュEEpromメモリ33にダウンロードするであろう。
本発明において、フラッシュEEpromメモリアレイ33は、セクタ(典型的には512バイトの大きさ)に組織されており、各セクタ内の全てのメモリセルは、一緒に消去可能である。かくして各々のセクタは、データファイルとみなされ、そしてメモリアレイ上の書込み操作は、1または2以上のそのようなファイルにおいて行なわれる。
フラッシュEEpromメモリ33の中における新しいセクタの読みの間、データファイルは読み出されて直接的にホストを介してコントローラに送られる。このファイルは通常のキャッシュシステムにおいて行なわれていたようにキャッシュメモリ705を満たすために使用されない。
ホストシステムがファイルの中のデータの処理を完了して、それをフラッシュEEpromメモリ33の中に書き戻そうと希望したときに、それはキャッシュシステム701に書込みサイクルの要求によりアクセスする。コントローラはこれによりこの要求を受け入れてそのサイクルで動作させる。
本発明の1つの具体例においてはデータファイルはキャッシュメモリ705へ書込まれる。同時にデータファイルに関連する他の2つの情報片はタグメモリ709に書込まれる。第1のものはファイルポインタであってキャッシュメモリ705の中に存在するファイルを規定する。第2のものはタイムスタンプであり、それはキャッシュメモリの中に最も最後にファイルされたかの時間を物語るものである。このようにしてホストがフラッシュEEpromメモリ33に書込みを欲するときはいつでも、そのデータファイルはポインタとタグメモリ709の中のタイムスタンプとともにキャッシュメモリ705の中に最初に現実に記憶されたものである。
本発明のさらに他の具体例によれば、ホストからの書込みがあったときは、コントローラはまず初めにそのファイルが既にキャッシュメモリの中に存在していたものであったのか、またはタグメモリ709の中においてタグが着けられたもののいずれかであったかを見ることによりチェックする。もしそれがタグが着けられていなかったならばフラッシュメモリ33に書込まれる。一方、その標識とタイムスタンプはタグメモリ709に書込まれる。もし、そのファイルすでにキャッシュメモリの中に存在するか、タグが着けられたものであったならば、それはキャッシュメモリの中で更新され、フラッシュメモリの中には書込まれない。この方法によりしばしば用いられないデータファイルのみがフラッシュメモリに書込まれる一方、しばしば用いられるデータファイルはキャッシュメモリの中に捉えられている。
本発明のさらに他の具体例によれば、ホストからの書込みがあったときは、予め定めた時間(例えば5分間のみ)の間にどこかでさらに書込まれたデータファイルであるかどうかを見てチェックする。もしそうでなかったならばフラッシュメモリ33に書込まれる。一方、その標識とタイムスタンプはタグメモリ709に書込まれる。もし、そのデータファイルが予め定めた時間間隔内に書込まれたものであったならば、それはキャッシュメモリ705の中に書込まれ、フラッシュメモリへは書込まれない。同時に、その標識とタイムスタンプはタグメモリ709へ他の実施例と同様に書込まれる。この方法においても同様にほとんど使用されないデータファイルのみがフラッシュメモリに記録される一方、しばしば使用されるデータファイルはキャッシュの中に捉えられている。
全ての具体例において、いつでもキャッシュメモリ705は充填されるように使われる。コントローラが予め決めた十分に満たされた状態に達したことを検出したときにはコントローラはキャッシュメモリ705の中のその他のファイルに優先してフラッシュメモリ33の中に書込むことによって保存することを開始する。
いずれの具体例においても、キャッシュメモリ705はいつでも充填される方向にスタートさせられている。コントローラがある定められた満たされた状態に達したことを検出したときにはコントローラはキャッシュメモリ705の中に他のものに優先してあるファイルの保存をフラッシュメモリ35の中にそれらを書込むことによって開始する。これらのファイルのためのファイルの標識であるタグビットはそのときにリセットさせる。そしてこれらのファイルが書き終わったものであることを示す。これにより、キャッシュメモリに入ろうとする新しいデータのための空間が形成される。
コントローラは新しいよく働くファイルのための空間を形成するために、最初に動かされた最も活用されないファイルをフラッシュメモリ33にもどすことに対する責任ももたされている。各ファイルの活動の水準を追跡して保持するために各ファイルのためのタイムスタンプはそのファイルの新しい活動のためにリセットされない限り、動作させられる度ごとにコントローラによって集積される。このタイミングはタイマ711によって提供されている。すべてのタイムステップ(カウント)にコントローラはキャッシュメモリの中のデータファイルに系統的にアクセスしてこのデータファイルのために、最後に書き込まれスタンプを読む。コントローラはそれからこのタイムスタンプを他のタイムステップ(すなわちカウントを1上昇)でインクリメントする。
ファイルのタイムスタンプに対して、そのファイルの活動にしたがって2つのことが起こる。1つの可能性は、そのタイムスタンプが新しい活動が発生したという事象によってリセットされることである。他の可能性はそのファイルについて新しい活動を発生しないで、そのタイムスタンプがキャッシュから除去されるまでインクリメントされることである。実際、タイムスタンプが無制限に増加すると最大の限界に達する。例えば、システムによりタイムスタンプが最大5分の不活動期間までインクリメントされる場合がある。したがって データファイルがキャシュメモリに書込まれるとき、ファイルのタイムスタンプは初期値に設定される。その後、タイムスタンプは、別の書込み更新により初期値に再度設定されなければ、タイムステップ毎にインクリメントしながら増加し始める。例えば、5分の不活動状態後には、タイムスタンプは最大値の終端カウントまでインクリメントされる。
カウントを維持する1つの実施例において、ファイルのカウントインクリメントが生じる度に、シフトレジスタのある場所にビットがシフトされる場合がある。もしファイルが更新(新しい活動が発生したこと)のときにビットの位置は、シフトレジスタの当初の位置にセットされるであろう。一方、ファイルが不活動状態にあるときにはある場合においてビットは次第に最終的なシフト位置に向かってシフトされるであろう。各ファイルのカウント値は各タイムステップごとに記憶され、それからインクリメントされていく。各インクリメント後、カウント値はマスターカウンタと比較され、その差は問題の時間遅れである。
かくして、もしファイルが活動状態であれば、その加算されたタイムスタンプはデータファイルが書き換えられる度に当初の値にリセットされてもどされる。この方法により、常に更新されているファイルは低いスタンプ標識を持ち、そしてその動作が減少するまで、キャッシュメモリの中に保存されるであろう。不活動の期間が経過した後に、それらは最大のタイムスタンプ標識を得る。使われていないファイルは次第にフラッシュメモリの中に記憶され、新しい、より使用されるファイルのためにキャッシュメモリの中のスペースを空けていく。タグメモリの中においてもスペースはこれらの不活性なファイルがフラッシュメモリに移動されるにしたがってあけられていく。
いつでもキャッシュメモリに入ろうとする新しいデータファイルのために場所が空けられている必要があり、コントローラはいくつかの古いファイルを除去してそれをフラッシュメモリ33の中に保存する。スケジューリングはコントローラの中のメモリタイミング/コントロール回路713によってなされる。ファイルを保存することについての決定はいろいろな領域に基礎づけられている。コントローラがそのシステムにおける書込みの発生頻度をいつも監視しており、キャッシュがどの程度満たされているかをみている。もし、キャッシュの中に、空き部屋、空間、空き間がときには保存がされる必要はない。もし、より多くの空き部屋が要求されるときは、最も速い時間のタイムスタンプをもつファイルが最初に移動され、フラッシュメモリに記憶される。
本発明はコントローラの中のハードウエアの中の構成に関連して記述されてきたが、他の構成が可能であるというようにも理解されたい。例えば、キャッシュメモリはそのシステムの中のどこに存在してもよいし、また現存するマイクロプロセッサシステムに用いられるソフトウエアによって実現されても良い。そのような変形は本発明の方の範囲内にある。
いかに多くの回数データがフラッシュメモリに書き戻されたかというプロファイルはいろいろな要素のもとで決定される。それは、キャッシュメモリの大きさとそのシステムにおける書込みの発生頻度に依存する。小さなキャッシュメモリシステムの場合では、最も頻度の高いファイルのみがキャッシュ化されるだろう。より少ない頻度でアクセスされるファイルはキャッシュメモリの大きさを増大することに関連してキャッシュ化されるであろう。本発明、すなわち比較的安くて小さい量のキャッシュメモリを使用する場合においては、好ましくは1メガバイト程度のものの利用が有効である。最も良く用いられるファイル(例えば上位5%)に定常的に書込まないようにすることにより、フラッシュEEpromの書込み頻度は、各ミリ秒ごとのものを5分毎秒程度に減少させることができるであろう。これにより、メモリの使い尽くし時間は、ほとんど永久というように延ばすことができる。この改良は書込み時間中のシステムの動作能率を向上させるという改良になって現れる。
タイムタグをライトキャッシュの概念の中に実現するということは、ライトキャッシュバッファメモリを比較的小さくするという利点となり、その理由は.それがしばしば、書かれるデータファイルの記憶に用いられ、その他のファイルはフラッシュEEpromメモリに直接書込まれるのである。第2の特徴は、ライトキャッシュバッファの入出で、ある移動データファイルの管理は、次にどのデータファイルが呼ばれるかという進んだ知識を要求されないので、自動化できることである。
前述した本発明の種々の点は、フラッシュEEpromメモリが従来の不揮発性大容量記憶装置と代替可能なものになるフラッシュEEpromメモリアレイのシステムに関連するものである。
前述した本発明の種々の点の実施例は好適な実施例であるが、当業者はそれらの変形例もまた実施可能であることを理解されたい。したがって、本発明は、添付の請求の範囲の全範囲内に保護が与えられるべきものである。