(57)【特許請求の範囲】
【請求項１】
ａ．データを格納するためのフラッシュアレイと、
ｂ．上記フラッシュアレイに接続され、一時的に上記データを保持するための複数の内部ラッチと、
ｃ．上記フラッシュアレイと上記複数の内部ラッチとに接続され、上記フラッシュアレイのソースアドレス内に格納されたデータを上記複数の内部ラッチに転送し、次いで当該データを上記フラッシュアレイ内の行先アドレスに外部メモリデバイスを用いることなく直接に転送するように構成されたコントローラと、
ｄ．上記フラッシュアレイに接続され、上記フラッシュアレイ内において、行先メモリブロックとして使用するフリーなメモリブロックを検索するように構成された外部コントローラとを備えたフラッシュメモリシステム。
【請求項２】
上記複数の内部ラッチは、同時にデータをロードすることができる、請求項１に記載のフラッシュメモリシステム。
【請求項３】
ａ．第１のメモリブロックと第２のメモリブロックとを有し、上記第１のメモリブロックはデータを格納するように構成されたフラッシュアレイと、
ｂ．上記データを一時的に保持するように構成された複数の内部ラッチと、
ｃ．上記フラッシュアレイと上記複数の内部ラッチとに接続され、上記第１のメモリブロックのデータを上記複数の内部ラッチに一時的に保持し、次いで当該データを上記複数の内部ラッチから上記第２のメモリブロックに転送することにより、データを上記第１のメモリブロックから上記第２のメモリブロックに転送するように構成されたコントローラと、
ｄ．上記フラッシュアレイに接続され、上記フラッシュアレイ内において、上記第２のメモリブロックとして使用されるべきフリーなメモリブロックを検索するように構成された外部コントローラとを備えたフラッシュメモリ装置。
【請求項４】
ａ．夫々データを格納するように構成されたソースメモリブロックと行先メモリブロックとを有するフラッシュアレイと、
ｂ．上記ソースメモリブロックに属するソースアドレスを保持するソースアドレスラッチと、上記行先メモリブロックに属する行先アドレスを保持する行先アドレスラッチと、
ｃ．上記フラッシュアレイに接続され、一時的に上記データを保持するための複数の内部ラッチと、
ｄ．上記フラッシュアレイ、上記ソースアドレスラッチ、上記行先アドレスラッチおよび上記複数の内部ラッチに接続され、上記ソースメモリブロックに格納されたデータを上記複数の内部ラッチに読み出し、次いで当該データを上記複数の内部ラッチから上記行先メモリブロックに書き込む状態マシーンと、
ｅ．上記フラッシュアレイに接続され、上記行先メモリブロックとして使用するフリーなメモリブロックを上記フラッシュアレイ内において検索するように構成された外部コントローラとを備えたフラッシュメモリ装置。
【請求項５】
集積回路上に形成されたフラッシュメモリ装置内において、外部バッファを用いることなく、上記フラッシュメモリ装置内の１つのフラッシュアレイの第１メモリブロックから第２メモリブロックにデータを転送する方法であって、上記方法は、
ａ．上記第１メモリブロックからデータを読み出すステップと、
ｂ．上記第１メモリブロックからのデータを上記集積回路内に配置された複数の内部ラッチ内に一時的に保持するステップと、
ｃ．上記第１メモリブロックからのデータであって上記複数の内部ラッチ内に保持されたデータを、上記第２メモリブロックに書き込むステップと、
ｄ．上記第２メモリブロックとして使用するフリーなメモリブロックを検索するステップとを備え、上記フリーなメモリブロックと上記第１メモリブロックとは同じフラッシュアレイ内に存在する方法。
【請求項６】
上記第２メモリブロックのアドレスを受信するステップをさらに備える、請求項５に記載の方法。
【請求項７】
フラッシュメモリ装置内の１つのフラッシュアレイ内に共に存在するソースメモリブロックから行先メモリブロックへデータを転送する方法であって、上記方法は、
ａ．上記ソースメモリブロックに属するソースアドレスをソースアドレスラッチに転送するとともに、上記行先メモリブロックに属する行先アドレスを行先アドレスラッチに転送するステップと、
ｂ．上記ソースメモリブロックからのデータを上記フラッシュメモリ装置内に存在する複数の内部ラッチに一時的に格納するステップと、
ｃ．上記複数の内部ラッチ内に格納されたデータを上記行先メモリブロックに書き込むステップとを含み、ここで、上記データは上記フラッシュメモリ装置内に留まり、
ｄ．上記フラッシュアレイ内において上記行先メモリブロックとして使用するフリーなメモリブロックを場所設定するステップとを備えた方法。
【請求項８】
集積回路上に形成されたフラッシュアレイ内に共に存在するソースメモリブロックから行先メモリブロックへデータを転送する方法であって、上記方法は、
ａ．上記ソースメモリブロックからデータを読み出すステップと、
ｂ．上記ソースメモリブロックからのデータを上記集積回路内に形成された複数の内部ラッチ内に一時的に保持するステップと、
ｃ．上記フラッシュアレイ内において上記行先メモリブロックとして使用するフリーなメモリブロックを場所設定するステップと、
ｄ．上記データを上記ソースメモリブロックから読み出し、上記複数の内部ラッチ内に保持し、次いで上記行先メモリブロックに書き込むステップとを含み、ここでデータはこの操作の間に上記フラッシュアレイから離れることはない方法。
【請求項９】
改良されたフラッシュメモリ装置であって、
ａ．ソースブロックと行先ブロックを備え、データを格納するフラッシュアレイと、
ｂ．上記フラッシュメモリ装置内に配置されるとともに上記フラッシュアレイに接続され、上記データを一時的に格納するための複数のラッチと、
ｃ．上記フラッシュアレイと上記複数のラッチとに接続され、上記ソースブロック内に格納された選択されたデータを上記複数のラッチに読み出し、さらに上記選択されたデータを上記複数のラッチから上記行先ブロックに書き込むコントローラと、
ｄ．上記フラッシュアレイ内において、行先ブロックとして使用するフリーなメモリブロックを検索するように構成された外部コントローラとを備えたフラッシュメモリ装置。
【請求項１０】
複数のフラッシュ集積回路を有するフラッシュメモリ装置内においてオリジナルのデータブロックを当該データブロックの更新されたバージョンで更新する方法であって、上記方法は、
ａ．上記データブロックの更新されたバージョンを格納するため、ある同じフラッシュ集積回路内におけるフリーな物理ブロックのアドレスを同定するステップと、
ｂ．上記オリジナルのデータブロックのいずれかの部分を存続させるか否かを決定するステップと、
ｃ．上記オリジナルのデータブロックのいかなる部分も存続させない場合には、上記データブロックの更新されたバージョンをホストから受信し、上記更新されたバージョンを上記フリーな物理ブロックのアドレスに格納するステップと、
ｄ．上記オリジナルのデータブロックの存続させるべき部分を複数の内部ラッチに読み出し、次いで、同じフラッシュ集積回路から外へ転送することなしに、上記複数の内部ラッチから、同じフラッシュ集積回路内の上記フリーな物理ブロックのアドレスに移すステップとを含む方法。
【請求項１１】
上記外部コントローラはさらに、上記フラッシュアレイ内にフリーなメモリブロックが存在しない場合には、他のフラッシュアレイにおいてフリーなメモリブロックを検索するように構成された、請求項１に記載のフラッシュメモリシステム。
【請求項１２】
上記外部コントローラはさらに、上記フラッシュアレイ内にフリーなメモリブロックが存在しない場合には、当該外部コントローラに接続された他のフラッシュアレイにおいて行先メモリブロックとして使用するフリーなメモリブロックを検索し、上記データを外部メモリデバイスに読み出し、次いで上記外部メモリデバイスから上記検索されたフリーなメモリブロックに上記データを書き込むように構成された、請求項１に記載のフラッシュメモリシステム。
【請求項１３】
上記フラッシュアレイ内にフリーなメモリブロックが存在しない場合には、他のフラッシュアレイにおいてフリーなメモリブロックを検索するステップをさらに備えた、請求項５に記載の方法。
【請求項１４】
上記同じフラッシュアレイ内にフリーなメモリブロックが存在しない場合には、上記フラッシュメモリ装置内の他のフラッシュアレイにおいて行先メモリブロックとして使用するフリーなメモリブロックを検索し、上記データを外部メモリデバイスに読み出し、上記外部メモリデバイスから上記検索されたフリーなメモリブロックに上記データを書き込むステップをさらに備えた、請求項５に記載の方法。
【請求項１５】
上記フラッシュアレイ内にフリーなメモリブロックが存在しない場合には、上記フラッシュメモリ装置内の他のフラッシュアレイにおいて行先メモリブロックとして使用するフリーなメモリブロックを検索し、上記データを外部メモリデバイスに読み出し、上記外部メモリデバイスから上記検索されたフリーなメモリブロックに上記データを書き込むステップをさらに備えた、請求項７に記載の方法。
【請求項１６】
上記フラッシュアレイ内にフリーなメモリブロックが存在しない場合には、上記集積回路上に形成された他のフラッシュアレイにおいて行先メモリブロックとして使用するフリーなメモリブロックを検索し、上記データを外部メモリデバイスに読み出し、上記外部メモリデバイスから上記検索されたフリーなメモリブロックに上記データを書き込むステップをさらに備えた、請求項８に記載の方法。
【請求項１７】
同じフラッシュ集積回路内にフリーな物理ブロックのアドレスが存在しない場合には、上記フラッシュメモリ装置内の他のフラッシュ集積回路において行先アドレスとして使用するフリーな物理ブロックのアドレスを検索し、上記オリジナルのデータブロックの存続させるべき部分を外部メモリデバイスに読み出し、次いで上記外部メモリデバイスから上記検索されたフリーな物理ブロックのアドレスに上記オリジナルのデータブロックの存続させるべき部分を書き込むステップをさらに備えた、請求項１０に記載の方法。
【請求項１８】
他のフラッシュ集積回路内にフリーな物理ブロックのアドレスが存在しない場合に上記ホストに対し通知することをさらに含む、請求項１７に記載の方法。
【発明の詳細な説明】
発明の分野
本発明は、フラッシュメモリ装置の分野に関する。より詳細には、この発明はフラッシュメモリ装置内において再書き込み操作を行なう際に外部メモリ装置を使用しないフラッシュメモリ装置に関する。
発明の背景
フラッシュメモリ装置は、その記憶内容を保持するためバックアップバッテリ等の電力を必要としない不揮発性メモリである。従来のフラッシュメモリ装置は、２つの２値状態の一方を表わすためフローティングゲートに電荷を保持し、保持された電荷がない場合には、他の２値状態を表わす。典型的なフラッシュメモリ装置は、以下の如き３つの基本動作、即ち読取動作、書込動作およびブロック消去動作を実行するように構成されている。
従来の他のメモリや大量記憶装置とは相違してあるビットを書き込む（プログラムする）および消去するのに必要な時間は相当なものである。さらに、あるビットを簡単には変更することができない。プログラムされたビットの状態がまず消去されなければならず、その後に再プログラムされる。しかしながら、フラッシュメモリは計算機の回転磁気媒体の代替物として使用されつつある。データやプログラムファイルとしての従来の回転磁気媒体では、単にデータを書き換えることで更新される。フラッシュメモリでは、書き込み前の消去の必要性のためデータの取扱いは異なる。
大量記憶用フラッシュメモリは、典型的にはブロック内に配置される。各ブロックは多数のアドレス可能なセクタを含み、各セクタは論理ブロックアドレスＬＢＡを有する。従来のシステムにおいて、あるブロックに格納されたデータやプログラムを更新する場合、ソースブロック内のデータがフラッシュメモリからまず読み出され、バッファラッチに格納される。同じフラッシュ装置内で消去されたブロックが行先ブロックとして特定される。変更されずに保持されるセクタは行先ブロックの対応するＬＢＡにプログラムされ、変更されたデータは行先ブロックの残りのＬＢＡにプログラムされる。
従来のフラッシュメモリ装置は、まずソースブロック（フラッシュアレイ内の）から移すべきデータをフラッシュデータラッチに転送する。次に、コントローラがフラッシュデータラッチに格納されたデータをある時刻に１バイト（８ビット）だけ読み取る。フラッシュメモリは、無制限の入／出力ピンを持つことができないので、そのデータをシーケンシャルに転送しなければならない。８ビットは一例であって、フラッシュメモリは種々の数のデータ入／出力ピンを持つように構成しうる。次に、コントローラは外部メモリ装置に格納されたこのデータの各バイトをシーケンシャルにフラッシュデータラッチに書き込む。最後に、コントローラは複数のデータラッチ内のデータをフラッシュアレイ内の行先ブロックに書き込むプログラム命令を発行する。従来のフラッシュメモリ装置では、データをフラッシュデータラッチから外部バッファに順次シフトさせるステップは、時間のかかるステップである。同様に、データを外部メモリ装置からフラッシュデータラッチに順次シフトさせるステップも時間がかかる。データをフラッシュメモリ内および外に順次シフトさせるこれらの時間のかかるステップは、装置の性能を損なう。
例えば、図１は典型的なフラッシュメモリ装置１００を示す。フラッシュアレイ１０５はデータを格納すべく構成された電子回路を含む。命令／制御論理１３０、アドレスラッチ１５０、ラッチデコーダ１４０、５２８バイトのラッチ１１０、複数の入／出力バッファラッチ１２０、入／出力バッファラッチ１２０、入／出力データバス１４５および外部コントローラ１３５はフラッシュアレイ１０５に結合されている。命令／制御論理１３０は、アドレスラッチ１５０、５２８バイトラッチ１１０、入／出力バッファラッチ１２０およびフラッシュアレイ１０５間のタイミングを調整する。
使用に際して、フラッシュアレイ１００内の所定の複数のセクタが同一のフラッシュアレイ１０５内の異なるブロックに転送されるべきときには、命令／制御論理１３０がフラッシュメモリ１０５からラッチ１１０にデータを読み出し、コントローラ１３５はラッチ１１０から外部コントローラ１３５へのデータをデータバッファ１４１に順次転送する。複数のセクタの各々がデータバッファ１４１内に読み込まれた後、外部コントローラ１３５はデータバッファ１４１から５２８バイトのラッチに複数のセクタの各々を順次に書き込む。複数のセクタの各々が５２８バイトラッチに再び書き込まれた後、複数のセクタはフラッシュアレイ１０５の新しい場所に転送される。フラッシュアレイ１０５から外部コントローラ１３５に順次データをシフトし、次いで外部コントローラ１３５からフラッシュアレイ１０５へデータを順次シフトバックする各ステップは時間がかかり、不必要にメモリ装置１００のリソースを浪費する。
図２はフラッシュメモリ装置１００（図１）のタイミングダイアグラムを示しており、チップイネーブル、アドレスイネーブル、ライトイネーブル、リードイネーブルおよびビジイインジケータを示している。図１を参照すると、図２およびそれについての記述がよく理解されるであろう。時刻Ｔ０で“リード”コマンドが外部コントローラ１３５に与えられ、フラッシュメモリ装置１００は、チップイネーブルおよびライトイネーブル機能を能動化することにより初期化される。次に、時刻Ｔ１において“ソースアドレス”が与えられると、アドレスイネーブル入力が能動化されてアドレスをラッチし、ライトイネーブル入力も能動化される。この段階でソースアドレスはアドレスラッチ１５０にセーブされる。レディインジケータは時刻Ｔ０とＴ２の間で能動化される。時刻Ｔ２と時刻Ｔ３の間の時間は遷移期間であり、ビジイ信号が能動化される。この時間に、フラッシュアレイ１０５からのデータはラッチ１１０に転送される。時刻Ｔ３において、外部コントローラ１３５によってデータがシフトされる用意が整ったことを指示するためにＲＤＹが表明される。時刻Ｔ３において、書き換えられるべきデータはフラッシュメモリ装置１００から順次読み出され、リードイネーブル機能が読み取られるデータの各バイト毎に能動化される。次に、時刻Ｔ４において、“シリアルイン”コマンドが与えられ、フラッシュメモリ装置１００は、コマンド／ラッチイネーブルおよびライトイネーブル機能を能動化することによって初期化される。時刻Ｔ５において“行先アドレス”がフラッシュメモリに与えられ、アドレスイネーブルおよびライトイネーブル機能が能動化されてアドレスラッチ１５０に行先アドレスを格納する。次に、時刻Ｔ６においてデータは外部コントローラ１３５から５２８バイトラッチ１１０に順次に書き込まれる。ライトイネーブル機能はフラッシュメモリ装置１００に書き込まれるデータの各バイト毎に能動化される。時刻Ｔ７と時刻Ｔ８の間で、“ライト”コマンドが与えられる。ライトコマンド機能の直後にライトイネーブル機能が能動化されて５２８バイトラッチ１１０内に存在していたデータをフラッシュアレイ１０５内の行先アドレスに同時的に転送する。ビジイインジケータは時刻Ｔ８と時刻Ｔ９の間で能動化される。時刻Ｔ９の後、ＲＤＹが能動化されてライトの終了を指示する。
データをフラッシュメモリから外部メモリ装置へ順次シフトし、次いで同じデータをフラッシュメモリに順次シフトバックすることなく、フラッシュアレイの一の個所から同じフラッシュアレイ内の他の個所にデータを書き換えるように構成されたフラッシュメモリが要請されている。さらに、多重フラッシュメモリシステムのため、同一フラッシュメモリ内においてフリーなメモリブロックを特定するコントローラが要請されている。
発明の要旨
本発明は、改良されたフラッシュメモリシステムからなる。この改良されたフラッシュメモリシステムは、フラッシュアレイ、内部バッファおよび内部コントローラからなる。本発明は、好ましくは、外部メモリ装置を用いることなしに、フラッシュアレイ内の１個所に格納されたデータを同じフラッシュアレイ内の他の個所に高速かつ効率的に書き換えるように構成される。本発明は、また、行先アドレスとなるフリーなメモリを同じフラッシュアレイ内において捜すように構成される。この書き換えプロセスの間、書き換えられるべきデータを順次フラッシュメモリシステム外にシフトし、外部メモリ装置にシフトする代わりに、改良されたフラッシュメモリシステムでは、フラッシュメモリシステム内の内部バッファ内にデータを一時的に保持する。さらに、外部メモリ装置から内部バッファに書き換えられるべきデータを書き込む代わりに、改良されたフラッシュメモリシステムでは、このデータは既に内部バッファに保持されている。この改良されたフラッシュメモリシステムは書き換えられるべきデータを外部メモリ装置にセーブするという特別な負担を解消するものである。
使用に際して、この改良されたフラッシュメモリシステムは、書き換えられるべきデータは、フラッシュアレイから内部バッファに単に転送されるに過ぎない。その後に、改良されたフラッシュメモリシステムは、この同じフラッシュアレイ内のフリーなメモリブロックがある新しいアドレスを指定する。同一フラッシュアレイ内において、フリーなメモリブロックを見付けだすことは、多重フラッシュメモリアレイシステムにとって重要である。次いで、フラッシュメモリシステムは、内部バッファからフラッシュアレイの新しいアドレス位置にデータを転送する。この方式では、データはフラッシュメモリ集積回路を離れることはない。多重フラッシュシステムにおいて、コントローラはこの挙動の改良についての利点を生かすために、好ましくは、同一のフラッシュメモリ集積回路上においてデータをソースブロックから行先ブロックに移すようする。
その代わりに、コントローラはソースと行先アドレスを与え、ソースブロック内の適当なＬＢＡから変更されないデータを読み取り、同時に行先ブロックにデータを書き込むことを単に制御するように制御しうる。
改良されたフラッシュメモリシステムは、フラッシュメモリシステム内においてデータをより効率的に再書き込みする。
本発明は、同一のフラッシュメモリ装置内においてデータを書き換えるために必要なステップ数を最少化する。さらに、本発明は、データを外部メモリ装置に順次にシフトさせることはない。
本発明の一つの目的は、同一フラッシュメモリシステム内においてデータを再書き込みするために、フラッシュメモリシステムによって必要なステップ数と時間量を最少化することである。本発明のいま一つの目的は、外部メモリ装置を用いることなしにフラッシュメモリシステム内のデータを書き換えることである。
【図面の簡単な説明】
図１は従来のフラッシュメモリ装置のブロックダイアグラムを示す。
図２は図１に示したフラッシュメモリ装置のタイミングダイアグラムを示す。
図３は本発明の第１の実施例のブロックダイアグラムを示す。
図４は図３に示した第１の実施例のタイミングダイアグラムを示す。
図５は本発明の第２の実施例のブロックダイアグラムを示す。
図６は図５に示した第２実施例のタイミングダイアグラムを示す。
図７は外部コントローラによって実行されるステップを示すフローチャートを示す。
本発明の詳細な説明
本発明は、外部メモリ装置を用いることなしに同一フラッシュメモリシステム内においてデータを再書き込みするためのシステムと方法の両方からなる。本システムは、好ましくは、フラッシュアレイ、複数の内部バッファおよび内部コントローラからなる。
図３は、フラッシュメモリシステム２００のブロックダイアグラムを示す。フラッシュメモリシステム２００以下のもの、即ち、内部５２８バイトラッチ２１０、入／出力バッファ２２０、ラッチおよびバッファ用デコーダ２３０、フラッシュアレイ２０５、命令／制御論理２４０、およびアドレスラッチ２６５からなる。命令／制御論理２４０は、フラッシュアレイ２０５、内部５２８バイトラッチ２１０、入／出力バッファ２２０およびアドレスラッチ２６５に結合されるよう構成されている。
命令／制御論理２４０は、好ましくは、フラッシュアレイ２０５、内部５２８バイトラッチ２１０、入／出力バッファ２２０およびアドレスラッチ２６５に対し制御信号を与える。
双方向バスがフラッシュアレイ２０５と内部５２８バイトラッチ２１０との間に接続されている。双方向バスは内部５２８バイトラッチ２１０と入／出力バッファ２２０との間には接続されている。さらに、入／出力バッファ２２０と外部コントローラ１３５の入／出力データバス２９５との間に双方向バスが接続されている。データバスは入／出力バッファ２２０からアドレスラッチ２６５へのデータ転送を行なう。
さらに、データバスはアドレスラッチ２６５からラッチ・バッファ２３０用のデコーダへのデータの流れを保証する。最終的に、データバスは、ラッチ・バッファ２３０用のデコーダからフラッシュアレイ２０５へのデータの流れを保証する。
本フラッシュメモリシステム２００によれば、フラッシュアレイ２０５内においてデータを再書き込みするための幾つかの基本動作を実行する装置を含む。第１に、命令／制御論理２４０は、好ましくは外部システムから外部コマンドバス２９６を介してリードコマンドを受け取り、この“リード”コマンドをフラッシュアレイ２０５に送る。その結果、再書き込みされるべきデータは、同時的に内部５２８バイトラッチ２１０に転送される。従来のシステムとは対照的に、このデータは入／出力データバス２９５を介してフラッシュメモリシステム２００の外部に順次シフトされることはない。次に、外部コントローラ１３５は、命令／制御論理２４０にデサインされている“新プログラム”コマンドと行先アドレスをアドレスラッチ２６５に送る。外部コントローラ１３５はフラッシュアレイ２０５内においてのみ、この行先アドレスのための未使用のブロック位置を捜す。最後に、内部５２８バイトラッチ２１０内に最初に格納された再書き込みデータは、フラッシュアレイ２０５に戻され、アドレスラッチ２６５内に格納された行先アドレスの個所に書き込まれる。
フラッシュメモリシステム２００は再書き込みされるべきデータをフラッシュメモリシステム２００の外へ、そして、外部メモリ装置に順次シフトする必要性を解消する。再書き込みすべきデータは内部５２８バイトラッチ２１０に残るので、フラッシュメモリシステム２００は外部メモリ装置にデータをシフトさせる必要はない。その結果、フラッシュメモリシステム２００は再書き込みされるべきデータを外部メモリ装置に一時的に格納する他のフラッシュメモリシステムに比べて、はるかに早く、かつ効率的にフラッシュアレイ２０５内においてデータを再書き込みする。
図４は、フラッシュメモリ装置２００（図３）のタイミングダイアグラムであり、コマンドラッチイネーブル、アドレスイネーブル、ライトイネーブル、リードイネーブルおよびビジイインジケータを示している。図３を参照すると、図４およびこれに関する説明がよりよく理解できる。このタイミングダイアグラムはメモリ装置２００のフラッシュアレイ２０５内にデータを再書き込みするのに要するステップを示す一例である。時刻Ｔ１０で“リード”コマンドが外部コントローラによって与えられ、フラッシュメモリ装置２００はチップイネーブルおよびライトイネーブル機能を立上げることにより初期化される。次に、時刻Ｔ１１において、“ソースアドレス”が与えられ、アドレスイネーブルとライトイネーブル信号が能動化される。この段階で、ソースアドレスはアドレスラッチ２６５内にセーブされる。ビジイインジケータは、時刻Ｔ１０とＴ１２の間で能動化される。時刻Ｔ１２と時刻Ｔ１３との間は遷移期間である。この時間、メモリ装置２００はＲＤＹ／ＢＳＹを宣言してリードサイクルの終了を外部コントローラ１３５に指示する。Ｔ１３において、外部コントローラ１３５は行先アドレスを伴なった新しいライトコマンドをメモリ装置２００に対して発行する。命令／制御論理２４０はこの新しいコマンドを認識して、データラッチ２１０からフラッシュアレイ２０５へのライト機能を初期化する。時刻Ｔ１４において、“行先アドレス”が与えられると、アドレスイネーブルとライトイネーブル機能が能動化されて、行先アドレスをアドレスラッチ２６５内に格納する。ビジイインジケータは、時刻Ｔ１３と時刻Ｔ１５の間で能動化される。メモリ装置２００外へのデータの順次の読み出しおよびフラッシュアレイ２０５へのデータの順次の書き込みが本メモリ装置２００では発生しないことを認識することが重要である。
図５はフラッシュメモリシステム３００のブロックダイアグラムを示す。フラッシュメモリシステム３００は上述し、かつ図３で示したフラッシュメモリシステム２００と同様である。簡単性と明確性のため、内部５２８バイトラッチ２１０、入／出力バッファ２２０、ラッチ・バッファ用デコーダ２３０、フラッシュアレイ２０５および命令／制御論理２４０は共通の参照番号を共有する。フラッシュメモリシステム３００は以下のもの、即ち、内部５２８バイトラッチ２１０、入／出力バッファ２２０、バッファ・ラッチ用デコーダ２３０、フラッシュアレイ２０５、命令／制御論理２４０、ステートマシーン２５０、ソースアドレスラッチ２６０、行先アドレスラッチ２７０および２次バッファ２８０からなる。命令／制御論理２４０はフラッシュアレイ２０５、内部５２８バイトラッチ２１０、入／出力バッファ２２０、ステートマシーン２５０、ソースアドレスラッチ２６０および行先アドレスラッチ２７０に接続される構成となっている。
外部コントローラ１３５はソースおよび行先アドレスを有する新しいコマンドをメモリ装置３００に与え、命令／制御論理２４０はフラッシュアレイ２０５、内部５２８バイトラッチ２１０、入／出力バッファ２２０、ソースアドレスラッチ２６０、および行先アドレスラッチ２７０に対して制御信号を与える。ステートマシーン２５０と外部制御ライン２９０は命令／制御論理２１０への入力を与える。
フラッシュアレイ２０５と内部５２８バイトラッチ２１０の間で両方向に流れるデータラインが設けられる。内部５２８バイトラッチ２１０と入／出力バッファ２２０の間にも両方向に流れるデータラインが設けられる。入／出力バッファ２２０と入／出力データバス２９５との間に、両方向に流れるデータラインが設けられている。データバス２９５からソースアドレスラッチ２６０と行先アドレスラッチ２７０に流れるデータラインがある。２次バッファ２８０から１つのデータラインがラッチ・バッファ用デコーダ２３０に至る。さらに、ラッチ・バッファ用デコーダ２３０からフラッシュアレイ２０５にデータラインが設けられている。ステートマシーン２５０は、外部メモリ装置に最初に格納することなしに再書き込みすべきデータの行先アドレスへの直接の転送を制御する。
本フラッシュメモリシステム３００では、フラッシュアレイ２０５内でのデータの再書き込みに関連する幾つかの基本ステップが存在する。最初に、外部コントローラ１３５は、新しい“ムーブ”コマンドをメモリ装置３００に送る。ソースアドレスと行先アドレスが外部コントローラ１３５によってフラッシュアレイ２０５に与えられ、かつ２つのアドレスラッチ即ちソースアドレスラッチ２６０と行先アドレスラッチ２７０とに夫々与えられる。次に、ステートマシーン２５０は命令／制御論理２４０と通信する。その結果、命令／制御論理２４０は再書き込みされるべきデータをフラッシュアレイ２０５上のソースアドレスから行先アドレスに送る。
フラッシュメモリシステムは、再書き込みすべきデータをフラッシュメモリシステム３００外に順次にシフトし、かつ外部メモリ装置内に順次シフトする必要性を解消するものである。再書き込みすべきデータは内部５２８バイトラッチ２１０上に存在するのでフラッシュメモリシステム３００は外部メモリ装置を必要としない。結果として、フラッシュメモリシステム３００は、再書き込みすべきデータを外部メモリ装置に一時的に格納する他のフラッシュメモリ装置に比べると、格段に高速かつ効率的にフラッシュアレイ２０５内でデータを再書き込みすることができる。本フラッシュメモリシステム３００は行先アドレスについて用いられるライトコマンドをフラッシュアレイ２０５に送る前にフラッシュアレイ２０５がリード機能を終了するのを待つことがないので外部コントローラ１３５のオーバーヘッドを解消することができる。
図６は、フラッシュメモリ装置３００（図５）のタイミングダイアグラムを表わし、チップイネーブル、アドレスイネーブル、ライトイネーブル、リードイネーブルおよびビジイインジケータを示している。図５を参照すると、図６およびこれに関連する説明がよりよく理解される。このタイミングダイアグラムはメモリ装置３００のフラッシュアレイ２０５内においてデータを再書き込みするのに必要なステップを示す一例である。時刻Ｔ２０において、新“ムーブ”コマンドが外部コントローラ１３５に与えられる。次に、時刻Ｔ２１において“ソースアドレス”が与えられ、アドレスイネーブルおよびライトイネーブル信号が能動化される。この段階で、ソースアドレスはソースアドレスラッチ２６０内にセーブされる。時刻Ｔ２２において、“行先アドレス”が与えられ、アドレスイネーブルおよびライトイネーブル機能が能動化され、行先アドレスを行先アドレスラッチ２７０内に格納する。ビジイインジケータは時刻Ｔ２０とＴ２３の間で能動化される。このメモリ装置３００では、メモリ装置からのシーケンシャルなデータの読み出しおよびフラッシュアレイ２５０へのデータの再書き込みが発生しないことが重要である。このケースでは、メモリ装置３００内の新ムーブステートマシーン２５０がリード動作の終了を確認するとともに新しいライトコマンドと行先アドレスを送信するためにＲＤＹ／ＢＳＹラインをモニタするための外部コントローラ１３５のオーバヘッドを解消する。
本発明において、フラッシュメモリから外への、そしてさらに外部メモリ装置へのデータのシーケンシャルなシフト動作およびこのデータの再度フラッシュメモリへのシーケンシャルなシフト動作を要することなく、ソース位置から行先位置にデータを再書き込みするためには、ソース位置と行先位置は同一フラッシュアレイ上に存在することが好ましい。図７は多フラッシュメモリシステムについては同一フラッシュアレイ２０５内でフリーなメモリブロックを同定するための外部コントローラ１３５の実行するステップを示すフローチャートである。ステップ７００において、ホストはライトコマンドを受信する。次に、ステップ７１０において、ホストアドレスが論理ブロックアドレスに変換される。ステップ７２０において、スペースマネージャＲＡＭはホストアドレスに割り当てられた物理ブロックアドレスを設定する。ステップ７３０において、外部コントローラ１３５はホストがこのブロック内の全てのセクタを更新中であるかを尋ねる。
もし、ホストがメモリブロック内の全てのセクタを更新中であれば、コントローラ１３５は、いかなるデータもムーブする必要がないステップ７４０に進む。ホストが所望のブロック内の全てのセクタを更新中でなければ、コントローラ１３５はステップ７５０に進み、ここで、コントローラ１３５は同一フラッシュアレイ２０５内のスペースマネージャＲＡＭ内のフリーなメモリブロックを捜す。ステップ７５０の後、ステップ７６０でフリーなメモリブロックが同一フラッシュアレイ２０５内において利用できるか否かをチェックする。フリーなメモリブロックがステップ７６０で見出されたならば、外部コントローラ１３５はステップ７７０に進む。ステップ７７０において、新しい改良されたムーブコマンド（New Improved Move Command）が実行され、未更新データがソースブロックから新しいフリーなメモリブロック（行先ブロック）に移動される。
しかして、もし同一フラッシュメモリ内にフリーなメモリが見付からなかったならば外部コントローラ１３５はステップ７８０に進む。ステップ７８０において、外部コントローラ１３５は他の全てのフラッシュアレイ内においてフリーなメモリブロックを探す。次に、ステップ７９０において、フリーなメモリブロックが発見されると、外部コントローラ１３５はソースブロックから外部バッファにデータを読み込み、ステップ８００に示すように、このデータを他の１つのフラッシュアレイ内の新しい行先アドレスに書き込む。フリーなメモリブロックがステップ７９０内に発見できない場合、外部コントローラ１３５はホストにエラーを報告し、ステップ８１０に示すように、ホストに利用可能なスペースがないことを通知する。
本発明は、発明の構成および動作の原理を十分理解できるよう、特定の実施例との関係において詳細に記述されている。これら具体的な実施例とその詳細についての言及はここに添付の特許請求の範囲を制限するために意図されたものではない。本発明の本質と範囲を逸脱することなしに図示のために選ばれた実施例において種々の修正をなしうることは当業者にとって自明であろう。とりわけ、本発明の装置は、種々の異なる方式で実施することができ、上に開示した実施例は本発明の好ましい実施例および別の実施例のほんの例示であり、決して制限を与えるものではない。
【図１】
0003827736.tif 000002
【図２】
0003827736.tif 000003
【図３】
0003827736.tif 000004
【図４】
0003827736.tif 000005
【図５】
0003827736.tif 000006
【図６】
0003827736.tif 000007
【図７】
0003827736.tif 000008