(57)【要約】【課題】  ホストコンピュータのメモリインタフェースに装着可能なフラッシュメモリコントローラ等を提供する。【解決手段】  コントローラ３のバッファ９は、ホストコンピュータ４とコントローラ３との間のデータ交換動作及びフラッシュメモリ２とコントローラ３との間のデータ交換動作に用いられる。第１の制御ブロックとしてのホストインタフェース制御ブロック５は、バッファ９とホストコンピュータ４との間のデータ交換動作を制御する。第２の制御ブロックとしてのフラッシュシーケンサブロック１２は、バッファ９とフラッシュメモリ２との間のデータ交換動作を制御する。ホストインタフェース制御ブロック５は、ホストコンピュータ４からの情報に基づき、バッファ９の入出力動作を制御する。フラッシュシーケンサブロック１２は、フラッシュメモリ２の１ページサイズにて、バッファ９の入出力動作を制御する。【選択図】  図１
2005025733.tif 000002
【特許請求の範囲】
【請求項１】
ホストコンピュータ及びフラッシュメモリとのデータ交換のために使用されるバッファと、
前記ホストコンピュータから供給される制御信号及びアドレス信号に基づいて、前記バッファと前記ホストコンピュータとの間でのデータ交換動作を制御する第１の制御ブロックと、
前記フラッシュメモリの１ページサイズにて、前記バッファと前記フラッシュメモリとの間でのデータ交換動作を制御する第２の制御ブロックと、
を備えることを特徴とするフラッシュメモリコントローラ。
【請求項２】
前記ホストコンピュータからアクセスされることが可能な少なくとも１つの情報メモリをさらに備え、
前記第２の制御ブロックは、前記情報メモリに設定された情報に基づいて、前記バッファと前記フラッシュメモリとの間でのデータ交換動作を制御する、
ことを特徴とする請求項１に記載のフラッシュメモリコントローラ。
【請求項３】
前記情報メモリには、前記ホストコンピュータのメモリアドレス空間又はＩ／Ｏアドレス空間に含まれる複数のアドレスが個別に割り付けられている、
ことを特徴とする請求項２に記載のフラッシュメモリコントローラ。
【請求項４】
前記バッファのデータ容量は、前記フラッシュメモリの１ページサイズであり、
前記バッファには、前記フラッシュメモリの１ページサイズに対応して、前記ホストコンピュータのメモリアドレス空間に含まれるアドレスが割り付けられている、
ことを特徴とする請求項１に記載のフラッシュメモリコントローラ。
【請求項５】
前記バッファに格納されているデータが前記フラッシュメモリに書き込まれるときに、前記第２の制御ブロックは、前記バッファの開始アドレスから終了アドレスへと向かう順番で、前記フラッシュメモリに転送するためのデータを前記バッファから順次に読み出し、
前記フラッシュメモリから読み出されたデータが前記バッファに格納されるときに、前記第２の制御ブロックは、前記バッファの開始アドレスから終了アドレスへと向かう順番で、前記フラッシュメモリから転送されたデータを順次に前記バッファに書き込む、
ことを特徴とする請求項１に記載のフラッシュメモリコントローラ。
【請求項６】
前記第１の制御ブロックは、前記ホストコンピュータに、前記バッファの格納データへのランダムなアクセスを提供する、
ことを特徴とする請求項１に記載のフラッシュメモリコントローラ。
【請求項７】
前記バッファは、複数のアドレスが個別に割り付けられた複数のデータ領域を含み、
前記ホストコンピュータから供給されたデータが前記バッファに格納されるときに、前記第１の制御ブロックは、前記ホストコンピュータから供給されたアドレス信号によって指定されたアドレスを有するデータ領域に、前記ホストコンピュータから供給されたデータ信号によって示されるデータを書き込み、
前記バッファに格納されているデータが前記ホストコンピュータに転送されるときに、前記第１の制御ブロックは、前記ホストコンピュータへとデータ信号を出力するために、前記ホストコンピュータから供給されたアドレス信号によって指定されたアドレスを有するデータ領域から格納データを読み出す、
ことを特徴とする請求項６に記載のフラッシュメモリコントローラ。
【請求項８】
メインプロセッサと、
前記メインプロセッサ及び外部のフラッシュメモリとのデータ交換のために使用されるバッファと、
前記メインプロセッサから供給される制御信号及びアドレス信号に基づいて、前記バッファと前記メインプロセッサとの間でのデータ交換動作を制御する第１のコントローラと、
前記フラッシュメモリの１ページサイズにて、前記バッファと前記フラッシュメモリとの間でのデータ交換動作を制御する第２のコントローラとを備える、
ことを特徴とするメモリ制御回路。
【請求項９】
前記メインプロセッサからアクセスされることが可能な少なくとも１つの情報メモリをさらに備え、
前記第２のコントローラは、前記メインプロセッサによって前記情報メモリに設定された情報に基づいて、前記バッファと前記フラッシュメモリとの間でのデータ交換動作を制御する、
ことを特徴とする請求項８に記載のメモリ制御回路。
【請求項１０】
前記情報メモリには、前記メインプロセッサのメモリアドレス空間又はＩ／Ｏアドレス空間に含まれる複数のアドレスが個別に割り付けられている、
ことを特徴とする請求項９に記載のメモリ制御回路。
【請求項１１】
前記バッファのデータ容量は、前記フラッシュメモリの１ページサイズであり、
前記バッファには、前記フラッシュメモリの１ページサイズに対応して、前記メインプロセッサのメモリアドレス空間に含まれるアドレスが割り付けられている、
ことを特徴とする請求項８に記載のメモリ制御回路。
【請求項１２】
前記バッファに格納されているデータが前記フラッシュメモリへと出力されるときに、前記第２のコントローラは、前記バッファの開始アドレスから終了アドレスへと向かう順番で、前記フラッシュメモリに転送するためのデータを前記バッファから順次に読み出し、
前記フラッシュメモリから入力されたデータが前記バッファに格納されるときに、前記第２のコントローラは、前記バッファの開始アドレスから終了アドレスへと向かう順番で、前記フラッシュメモリから転送されたデータを順次に前記バッファに書き込む、
ことを特徴とする請求項８に記載のメモリ制御回路。
【請求項１３】
前記第１のコントローラは、前記メインプロセッサに、前記バッファの格納データへのランダムなアクセスを提供する、
ことを特徴とする請求項８に記載のメモリ制御回路。
【請求項１４】
前記バッファは、複数のアドレスが個別に割り付けられた複数のデータ領域を含み、
前記メインプロセッサから供給されたデータが前記バッファに格納されるときに、前記第１のコントローラは、前記メインプロセッサから供給されたアドレス信号によって指定されたアドレスを有するデータ領域に、前記メインプロセッサから供給されたデータ信号によって示されるデータを書き込み、
前記バッファに格納されているデータが前記メインプロセッサに転送されるときに、前記第１のコントローラは、前記メインプロセッサへとデータ信号を出力するために、前記メインプロセッサから供給されたアドレス信号によって指定されたアドレスを有するデータ領域から格納データを読み出す、
ことを特徴とする請求項１３に記載のメモリ制御回路。
【請求項１５】
複数のページに分割されたメモリ空間を有するフラッシュメモリと、
外部のホストコンピュータ及び前記フラッシュメモリとのデータ交換のために使用されるバッファと、
前記ホストコンピュータから供給される制御信号及びアドレス信号に基づいて、前記バッファと前記ホストコンピュータとの間でのデータ交換動作を制御する第１の制御ブロックと、
前記フラッシュメモリの１ページサイズにて、前記バッファと前記フラッシュメモリとの間でのデータ交換動作を制御する第２の制御ブロックとを備える、
ことを特徴とするフラッシュメモリシステム。
【請求項１６】
前記ホストコンピュータからアクセスされることが可能な少なくとも１つの情報メモリをさらに備え、
前記第２の制御ブロックは、前記情報メモリに設定された情報に基づいて、前記バッファと前記フラッシュメモリとの間でのデータ交換動作を制御する、
ことを特徴とする請求項１５に記載のフラッシュメモリシステム。
【請求項１７】
前記情報メモリには、前記ホストコンピュータのメモリアドレス空間又はＩ／Ｏアドレス空間に含まれる複数のアドレスが個別に割り付けられている、
ことを特徴とする請求項１６に記載のフラッシュメモリシステム。
【請求項１８】
前記バッファのデータ容量は、前記フラッシュメモリの１ページサイズであり、
前記バッファには、前記フラッシュメモリの１ページサイズに対応して、前記ホストコンピュータのメモリアドレス空間に含まれるアドレスが割り付けられている、
ことを特徴とする請求項１５に記載のフラッシュメモリシステム。
【請求項１９】
前記バッファに格納されているデータが前記フラッシュメモリに書き込まれるときに、前記第２の制御ブロックは、前記バッファの開始アドレスから終了アドレスへと向かう順番で、前記フラッシュメモリに転送するためのデータを前記バッファから順次に読み出し、
前記フラッシュメモリから読み出されたデータが前記バッファに格納されるときに、前記第２の制御ブロックは、前記バッファの開始アドレスから終了アドレスへと向かう順番で、前記フラッシュメモリから転送されたデータを順次に前記バッファに書き込む、
ことを特徴とする請求項１５に記載のフラッシュメモリシステム。
【請求項２０】
前記第１の制御ブロックは、前記ホストコンピュータに、前記バッファの格納データへのランダムアクセスを提供する、
ことを特徴とする請求項１５に記載のフラッシュメモリシステム。
【請求項２１】
前記バッファは、複数のアドレスが個別に割り付けられた複数のデータ領域を含み、
前記ホストコンピュータから供給されたデータが前記バッファに格納されるときに、前記第１の制御ブロックは、前記ホストコンピュータから供給されたアドレス信号によって指定されるアドレスを有するデータ領域に、前記ホストコンピュータから供給されたデータ信号によって示されるデータを書き込み、
前記バッファに格納されているデータが前記ホストコンピュータに転送されるときに、前記第１の制御ブロックは、前記ホストコンピュータへとデータ信号を出力するために、前記ホストコンピュータから供給されたアドレス信号によって指定されたアドレスを有するデータ領域から格納データを読み出す、
ことを特徴とする請求項２０に記載のフラッシュメモリシステム。
【請求項２２】
ホストコンピュータとフラッシュメモリとの間でのデータ交換動作を制御するための制御方法であって、
前記ホストコンピュータから供給される制御信号及びアドレス信号に基づいて、第１のコントローラによって、前記ホストコンピュータと、データ容量が前記フラッシュメモリの１ページサイズであるバッファとの間での、データ交換動作を制御する第１の制御ステップと、
第２のコントローラによって、前記フラッシュメモリの１ページサイズにて、前記バッファと前記フラッシュメモリとの間でのデータ交換動作を制御する第２の制御ステップとを備える、
ことを特徴とする制御方法。
【請求項２３】
前記第２の制御ステップは、
前記バッファに格納されているデータが前記フラッシュメモリに書き込まれるときに、前記第２のコントローラにより、前記バッファの開始アドレスから終了アドレスへと向かう順番で、前記フラッシュメモリに転送するためのデータを前記バッファから順次に読み出すことと、
前記フラッシュメモリから読み出されたデータが前記バッファに格納されるときに、前記第２のコントローラにより、前記バッファの開始アドレスから終了アドレスへと向かう順番で、前記フラッシュメモリから転送されたデータを順次に前記バッファに書き込むことを含む、
ことを特徴とする請求項２２に記載の制御方法。
【請求項２４】
前記バッファは、複数のアドレスが個別に割り付けられた複数のデータ領域を含み、
前記第１の制御ステップは、
前記ホストコンピュータから供給されたデータが前記バッファに格納されるときに、前記第１のコントローラにより、前記ホストコンピュータから供給されたアドレス信号によって指定されたアドレスを有するデータ領域に、前記ホストコンピュータから供給されたデータ信号によって示されるデータを書き込むことと、
前記バッファに格納されているデータが前記ホストコンピュータに転送されるときに、前記第１のコントローラにより、前記ホストコンピュータへとデータ信号を出力するために、前記ホストコンピュータから供給されたアドレス信号によって指定されたアドレスを有するデータ領域から格納データを読み出すこととを含む、
ことを特徴とする請求項２２に記載の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリコントローラと、そのコントローラを有するメモリ制御回路、フラッシュメモリシステム、及びホストコンピュータとフラッシュメモリとの間でのデータ交換動作を制御するための方法に関する。
【背景技術】
【０００２】
近年、メモリーカードやシリコンディスクといったメモリシステムにて使用される半導体メモリに、フラッシュメモリが広く採用されている。フラッシュメモリは、不揮発性メモリの一種である。フラッシュメモリに格納されたデータは、電力が供給されていないときでも保持されていることが要求される。
【０００３】
ＮＡＮＤ型フラッシュメモリは、上記のメモリシステムで特に多く用いられるフラッシュメモリの一種である。ＮＡＮＤ型フラッシュメモリに含まれている複数のメモリセルのそれぞれは、他のメモリセルとは独立して、論理値“１”を示すデータが格納されている消去状態から、論理値“０”を示すデータが格納されている書込状態へと変化することができる。
【０００４】
これとは対照的に、複数のメモリセルのうちの少なくとも１つが書込状態から消去状態へと変化しなければならないときには、各メモリセルは他のメモリセルと独立して変化することができない。このときには、ブロックと称される予め定められた数のメモリセルにおいて、全てのメモリセルが同時に消去状態とならなければならない。この一括消去動作は、一般的に、“ブロック消去”と称されている。
【０００５】
フラッシュメモリが上記のような特徴を有しているのは、コンピュータシステムにおいてフラッシュメモリがハードディスクドライブ（ＨＤＤ）と同様に取り扱われることが想定されていたからである。この特徴を有するフラッシュメモリを採用したフラッシュメモリシステムは、通常、ＡＴＡ（Advanced Technology Attachment）といったＨＤＤの規格に準拠している。従って、上記のフラッシュメモリがホストコンピュータに接続されたコンピュータシステムでは、ホストコンピュータがフラッシュメモリシステムを通常のＨＤＤと同じように取り扱っている。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、ＨＤＤの規格に準拠したフラッシュメモリシステムは、ＨＤＤのためのインターフェースを有していないホストコンピュータに接続することができない。フラッシュメモリを制御するための制御回路がフラッシュメモリ自身とは独立しているときには、その制御回路をホストコンピュータのメモリインタフェースに装着することが便利な場合もある。
【０００７】
また、データ転送が行われていないときに外部バスからの指示に応じて外部から直接揮発性メモリへアクセスしているような擬似的アクセスを可能にするコントローラが開示されいる。（例えば、特許文献１参照）。
【特許文献１】特開２００２−３２８８３６号公報（第２−１３頁、第１図）
【０００８】
この文献に開示されているコントローラは、フラッシュメモリから読み出されたデータをＲＡＭに記憶できるようにし、そのＲＡＭは、ＮＡＮＤ型フラッシュメモリにおける数ページに対応した記憶容量を有している。これに対して、ホストコンピュータからフラッシュメモリへの柔軟なアクセスを可能とする、より簡単な構成が求められている。
【０００９】
本発明は、上記実状に鑑みてなされたもので、ホストコンピュータのメモリインタフェースに装着可能なフラッシュメモリコントローラと、そのコントローラを有するメモリ制御回路、フラッシュメモリシステム、及びホストコンピュータとフラッシュメモリとの間でのデータ交換動作を制御するための方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するため、本発明の第１の観点に係るフラッシュメモリコントローラは、
ホストコンピュータ及びフラッシュメモリとのデータ交換のために使用されるバッファと、
前記ホストコンピュータから供給される制御信号及びアドレス信号に基づいて、前記バッファと前記ホストコンピュータとの間でのデータ交換動作を制御する第１の制御ブロックと、
前記フラッシュメモリの１ページサイズにて、前記バッファと前記フラッシュメモリとの間でのデータ交換動作を制御する第２の制御ブロックと、
を備えることを特徴とする。
【００１１】
前記ホストコンピュータからアクセスされることが可能な少なくとも１つの情報メモリをさらに備え、
前記第２の制御ブロックは、前記情報メモリに設定された情報に基づいて、前記バッファと前記フラッシュメモリとの間でのデータ交換動作を制御してもよい。
【００１２】
前記情報メモリには、前記ホストコンピュータのメモリアドレス空間又はＩ／Ｏアドレス空間に含まれる複数のアドレスが個別に割り付けられていてもよい。
【００１３】
前記バッファのデータ容量は、前記フラッシュメモリの１ページサイズであり、
前記バッファには、前記フラッシュメモリの１ページサイズに対応して、前記ホストコンピュータのメモリアドレス空間に含まれるアドレスが割り付けられていてもよい。
【００１４】
前記バッファに格納されているデータが前記フラッシュメモリに書き込まれるときに、前記第２の制御ブロックは、前記バッファの開始アドレスから終了アドレスへと向かう順番で、前記フラッシュメモリに転送するためのデータを前記バッファから順次に読み出し、
前記フラッシュメモリから読み出されたデータが前記バッファに格納されるときに、前記第２の制御ブロックは、前記バッファの開始アドレスから終了アドレスへと向かう順番で、前記フラッシュメモリから転送されたデータを順次に前記バッファに書き込んでもよい。
【００１５】
前記第１の制御ブロックは、前記ホストコンピュータに、前記バッファの格納データへのランダムなアクセスを提供してもよい。
【００１６】
前記バッファは、複数のアドレスが個別に割り付けられた複数のデータ領域を含み、
前記ホストコンピュータから供給されたデータが前記バッファに格納されるときに、前記第１の制御ブロックは、前記ホストコンピュータから供給されたアドレス信号によって指定されたアドレスを有するデータ領域に、前記ホストコンピュータから供給されたデータ信号によって示されるデータを書き込み、
前記バッファに格納されているデータが前記ホストコンピュータに転送されるときに、前記第１の制御ブロックは、前記ホストコンピュータへとデータ信号を出力するために、前記ホストコンピュータから供給されたアドレス信号によって指定されたアドレスを有するデータ領域から格納データを読み出してもよい。
【００１７】
上記目的を達成するため、本発明の第２の観点に係るメモリ制御回路は、
メインプロセッサと、
前記メインプロセッサ及び外部のフラッシュメモリとのデータ交換のために使用されるバッファと、
前記メインプロセッサから供給される制御信号及びアドレス信号に基づいて、前記バッファと前記メインプロセッサとの間でのデータ交換動作を制御する第１のコントローラと、
前記フラッシュメモリの１ページサイズにて、前記バッファと前記フラッシュメモリとの間でのデータ交換動作を制御する第２のコントローラとを備える、
ことを特徴とする。
【００１８】
前記メインプロセッサからアクセスされることが可能な少なくとも１つの情報メモリをさらに備え、
前記第２のコントローラは、前記メインプロセッサによって前記情報メモリに設定された情報に基づいて、前記バッファと前記フラッシュメモリとの間でのデータ交換動作を制御してもよい。
【００１９】
前記情報メモリには、前記メインプロセッサのメモリアドレス空間又はＩ／Ｏアドレス空間に含まれる複数のアドレスが個別に割り付けられていてもよい。
【００２０】
前記バッファのデータ容量は、前記フラッシュメモリの１ページサイズであり、
前記バッファには、前記フラッシュメモリの１ページサイズに対応して、前記メインプロセッサのメモリアドレス空間に含まれるアドレスが割り付けられていてもよい。
【００２１】
前記バッファに格納されているデータが前記フラッシュメモリへと出力されるときに、前記第２のコントローラは、前記バッファの開始アドレスから終了アドレスへと向かう順番で、前記フラッシュメモリに転送するためのデータを前記バッファから順次に読み出し、
前記フラッシュメモリから入力されたデータが前記バッファに格納されるときに、前記第２のコントローラは、前記バッファの開始アドレスから終了アドレスへと向かう順番で、前記フラッシュメモリから転送されたデータを順次に前記バッファに書き込んでもよい。
【００２２】
前記第１のコントローラは、前記メインプロセッサに、前記バッファの格納データへのランダムなアクセスを提供してもよい。
【００２３】
前記バッファは、複数のアドレスが個別に割り付けられた複数のデータ領域を含み、
前記メインプロセッサから供給されたデータが前記バッファに格納されるときに、前記第１のコントローラは、前記メインプロセッサから供給されたアドレス信号によって指定されたアドレスを有するデータ領域に、前記メインプロセッサから供給されたデータ信号によって示されるデータを書き込み、
前記バッファに格納されているデータが前記メインプロセッサに転送されるときに、前記第１のコントローラは、前記メインプロセッサへとデータ信号を出力するために、前記メインプロセッサから供給されたアドレス信号によって指定されたアドレスを有するデータ領域から格納データを読み出してもよい。
【００２４】
上記目的を達成するため、本発明の第３の観点に係るフラッシュメモリシステムは、
複数のページに分割されたメモリ空間を有するフラッシュメモリと、
外部のホストコンピュータ及び前記フラッシュメモリとのデータ交換のために使用されるバッファと、
前記ホストコンピュータから供給される制御信号及びアドレス信号に基づいて、前記バッファと前記ホストコンピュータとの間でのデータ交換動作を制御する第１の制御ブロックと、
前記フラッシュメモリの１ページサイズにて、前記バッファと前記フラッシュメモリとの間でのデータ交換動作を制御する第２の制御ブロックとを備える、
ことを特徴とする。
【００２５】
前記ホストコンピュータからアクセスされることが可能な少なくとも１つの情報メモリをさらに備え、
前記第２の制御ブロックは、前記情報メモリに設定された情報に基づいて、前記バッファと前記フラッシュメモリとの間でのデータ交換動作を制御してもよい。
【００２６】
前記情報メモリには、前記ホストコンピュータのメモリアドレス空間又はＩ／Ｏアドレス空間に含まれる複数のアドレスが個別に割り付けられていてもよい。
【００２７】
前記バッファのデータ容量は、前記フラッシュメモリの１ページサイズであり、
前記バッファには、前記フラッシュメモリの１ページサイズに対応して、前記ホストコンピュータのメモリアドレス空間に含まれるアドレスが割り付けられていてもよい。
【００２８】
前記バッファに格納されているデータが前記フラッシュメモリに書き込まれるときに、前記第２の制御ブロックは、前記バッファの開始アドレスから終了アドレスへと向かう順番で、前記フラッシュメモリに転送するためのデータを前記バッファから順次に読み出し、
前記フラッシュメモリから読み出されたデータが前記バッファに格納されるときに、前記第２の制御ブロックは、前記バッファの開始アドレスから終了アドレスへと向かう順番で、前記フラッシュメモリから転送されたデータを順次に前記バッファに書き込んでもよい。
【００２９】
前記第１の制御ブロックは、前記ホストコンピュータに、前記バッファの格納データへのランダムアクセスを提供してもよい。
【００３０】
前記バッファは、複数のアドレスが個別に割り付けられた複数のデータ領域を含み、
前記ホストコンピュータから供給されたデータが前記バッファに格納されるときに、前記第１の制御ブロックは、前記ホストコンピュータから供給されたアドレス信号によって指定されるアドレスを有するデータ領域に、前記ホストコンピュータから供給されたデータ信号によって示されるデータを書き込み、
前記バッファに格納されているデータが前記ホストコンピュータに転送されるときに、前記第１の制御ブロックは、前記ホストコンピュータへとデータ信号を出力するために、前記ホストコンピュータから供給されたアドレス信号によって指定されたアドレスを有するデータ領域から格納データを読み出してもよい。
【００３１】
上記目的を達成するため、本発明の第４の観点に係る制御方法は、
ホストコンピュータとフラッシュメモリとの間でのデータ交換動作を制御するための制御方法であって、
前記ホストコンピュータから供給される制御信号及びアドレス信号に基づいて、第１のコントローラによって、前記ホストコンピュータと、データ容量が前記フラッシュメモリの１ページサイズであるバッファとの間での、データ交換動作を制御する第１の制御ステップと、
第２のコントローラによって、前記フラッシュメモリの１ページサイズにて、前記バッファと前記フラッシュメモリとの間でのデータ交換動作を制御する第２の制御ステップとを備える、ことを特徴とする。
【００３２】
前記第２の制御ステップは、
前記バッファに格納されているデータが前記フラッシュメモリに書き込まれるときに、前記第２のコントローラにより、前記バッファの開始アドレスから終了アドレスへと向かう順番で、前記フラッシュメモリに転送するためのデータを前記バッファから順次に読み出すことと、
前記フラッシュメモリから読み出されたデータが前記バッファに格納されるときに、前記第２のコントローラにより、前記バッファの開始アドレスから終了アドレスへと向かう順番で、前記フラッシュメモリから転送されたデータを順次に前記バッファに書き込むことを含んでもよい。  
【００３３】
前記バッファは、複数のアドレスが個別に割り付けられた複数のデータ領域を含み、
前記第１の制御ステップは、
前記ホストコンピュータから供給されたデータが前記バッファに格納されるときに、前記第１のコントローラにより、前記ホストコンピュータから供給されたアドレス信号によって指定されたアドレスを有するデータ領域に、前記ホストコンピュータから供給されたデータ信号によって示されるデータを書き込むことと、
前記バッファに格納されているデータが前記ホストコンピュータに転送されるときに、前記第１のコントローラにより、前記ホストコンピュータへとデータ信号を出力するために、前記ホストコンピュータから供給されたアドレス信号によって指定されたアドレスを有するデータ領域から格納データを読み出すこととを含んでもよい。
【発明の効果】
【００３４】
本発明によれば、ホストコンピュータのメモリインタフェースに装着可能なフラッシュメモリコントローラと、そのコントローラを有するメモリ制御回路、フラッシュメモリシステム、及びホストコンピュータとフラッシュメモリとの間でのデータ交換動作を制御するための方法を提供することができる。
【発明を実施するための最良の形態】
【００３５】
本発明の実施の形態に係るフラッシュメモリシステムについて、以下図面を参照して説明する。
【００３６】
図１は、本発明にかかるフラッシュメモリシステム１を概略的に示す図である。フラッシュメモリシステム１は、フラッシュメモリ２と、コントローラ３とを有している。フラッシュメモリシステム１は、ホストコンピュータ４が有するメモリインタフェースに装着されることができる。例えば、ホストコンピュータ４は、ＣＰＵ（Central Processing Unit）といった、メインプロセッサである。
【００３７】
図１に示されたフラッシュメモリ２は、不揮発性メモリである。フラッシュメモリ２において、データ読出動作およびデータ書込動作はともに、いわゆるページ単位で、実行される。他方、フラッシュメモリ２に格納されたデータは、いわゆるブロック単位で、消去される。
【００３８】
図２及び図３は、フラッシュメモリ２に含まれている１つのメモリセル１６の構造を概略的に示す断面図である。図２では、メモリセル１６にデータが書き込まれていない。図３では、メモリセル１６にデータが書き込まれている。
図２及び図３に示されているように、メモリセル１６は、Ｐ型半導体基板１７と、Ｎ型ソース拡散領域１８と、Ｎ型ドレイン拡散領域１９と、トンネル酸化膜２０と、フローティングゲート電極２１と、絶縁膜２２と、コントロールゲート電極２３とを含んでいる。
【００３９】
Ｎ型ソース拡散領域１８及びＮ型ドレイン拡散領域１９はともに、Ｐ型半導体基板１７上に形成されている。トンネル酸化膜２０は、Ｎ型ソース拡散領域１８とＮ型ドレイン拡散領域１９との間において、Ｐ型半導体基板１７を覆っている。フローティングゲート電極２１は、トンネル酸化膜２０上に形成されている。絶縁膜２２は、フローティングゲート電極２１上に形成されている。コントロールゲート電極２３は、絶縁膜２２上に形成されている。フラッシュメモリ２では、複数のメモリセル１６が直列に接続されている。１つのメモリセル１６は、１ビットのデータを格納する。
【００４０】
図２に示されているように、フローティングゲート電極２１に電子が蓄積されていないとき、メモリセル１６は、消去状態にある。他方、フローティングゲート電極２１に電子が蓄積されているとき、メモリセル１６は、書込状態にある。消去状態のメモリセル１６は、論理値“１”を示すデータを格納している。書込状態のメモリセル１６は、論理値“０”を示すデータを格納している。
【００４１】
メモリセル１６に格納されたデータを読み出すために予め定められた読出電圧が、消去状態となっているメモリセル１６のコントロールゲート電極２３に印加されていないときには、Ｎ型ソース拡散領域１８とＮ型ドレイン拡散領域１９との間のＰ型半導体基板１７の表面に、チャネルが形成されない。従って、Ｎ型ソース拡散領域１８とＮ型ドレイン拡散領域１９は、互いに電気的に絶縁される。
【００４２】
これに対して、消去状態となっているメモリセル１６のコントロールゲート電極２３に読出電圧が印加されているときには、Ｎ型ソース拡散領域１８とＮ型ドレイン拡散領域１９との間のＰ型半導体基板１７の表面に、チャネル（図示せず）が形成される。Ｎ型ソース拡散領域１８とＮ型ドレイン拡散領域１９は、そのチャネルによって電気的に接続される。
【００４３】
上述のように、消去状態となっているメモリセル１６のコントロールゲート電極２３に読出電圧が印加されていないときには、Ｎ型ソース拡散領域１８とＮ型ドレイン拡散領域１９が電気的に絶縁される。消去状態となっているメモリセル１６のコントロールゲート電極２３に読出電圧が印加されているときには、Ｎ型ソース拡散領域１８とＮ型ドレイン拡散領域１９が電気的に接続される。
【００４４】
図３に示されているように、フローティングゲート電極２１に電子が蓄積されているとき、メモリセル１６は、書込状態にある。フローティングゲート電極２１はトンネル酸化膜２０と絶縁膜２２に挟まれている。そのため、電子が一旦フローティングゲート電極２１に注入されると、電位障壁により、きわめて長時間にわたり電子がフローティングゲート電極２１内にとどまる。フローティングゲート電極２１に電子を蓄積することにより書込状態となっているメモリセル１６では、コントロールゲート電極２３に読出電圧が印加されているか否かにかかわらず、チャネル２４がＮ型ソース拡散領域１８とＮ型ドレイン拡散領域１９との間のＰ型半導体基板１７の表面に形成される。従って、メモリセル１６が書込状態となっているときには、コントロールゲート電極２３に読出電圧が印加されているか否かにかかわらず、Ｎ型ソース拡散領域１８とＮ型ドレイン拡散領域１９が電気的に接続される。
【００４５】
メモリセル１６が消去状態であるか書込状態であるかを特定するためのデータ読出動作を、以下に説明する。フラッシュメモリ２では、複数のメモリセル１６が直列に接続されている。その複数のメモリセル１６のうちの１つが、格納データの読み出しのためにコントローラ３によって選択される。所定の低レベル電圧が、その選択された１つのメモリセル１６に取り付けられたコントロールゲート電極２３に印加される。低レベル電圧よりも高い所定の高レベル電圧（読出電圧）が、複数のメモリセル１６のうちの他のものに取り付けられたコントロールゲート電極２３に印加される。
【００４６】
この状況で、一連のメモリセル１６が導通しているか否かを、所定の検出器により検出する。検出器が導通を検出したとき、選択されたメモリセル１６は、書込状態である。検出器が不導通を検出したとき、選択されたメモリセル１６は、消去状態である。上記のように、フラッシュメモリ２は、直列に接続された一連のメモリセル１６のうちの任意の１つから論理値“０”又は“１”を示す格納データを読み出すように、設計されている。
【００４７】
メモリセル１６の状態を消去状態と書込状態との間で変更するときには、メモリセル１６のデータ読出動作にて使用される電圧よりも大きい消去電圧又は書込電圧が使用される。消去状態となっているメモリセル１６を書込状態に変更するときには、コントロールゲート電極２３の電位がフローティングゲート電極２１の電位よりも高くなるように、書込電圧がコントロールゲート電極２３に印加される。この書込電圧によって、Ｐ型半導体基板１７とフローティングゲート電極２１の間に、トンネル酸化膜２０を介してＦＮ（ファウラーノルトハイム；Fowler-Nordhaim）トンネル電流が流れる。この結果、電子がフローティングゲート電極２１に注入される。
【００４８】
他方、書込状態となっているメモリセル１６を消去状態に変更するときには、コントロールゲート電極２３の電位がフローティングゲート電極２１の電位よりも低くなるように、消去電圧がコントロールゲート電極２３に印加される。この消去電圧によって、フローティングゲート電極２１に蓄積されている電子がトンネル酸化膜２０を介してＰ型半導体基板１７に排出される。
【００４９】
以下に、フラッシュメモリ２にデータを格納するための構造を説明する。図４は、フラッシュメモリ２のアドレス空間を概略的に示している。図４に示された構造において、フラッシュメモリ２のアドレス空間は、“ページ”と“ブロック”に基づいて分割されている。ページは、フラッシュメモリ２にて行われるデータ読出動作及びデータ書込動作における処理単位である。ブロックは、フラッシュメモリ２にて行われるデータ消去動作における処理単位である。
【００５０】
１つのページは、５１２バイトのデータ領域２５と、１６バイトの冗長領域２６とを含んでいる。データ領域２５は、ホストコンピュータ４から供給されるユーザデータを格納する。冗長領域２６は、ＥＣＣブロック１１によって生成されたエラーコレクションコード（ＥＣＣ）といった付加情報を格納する。エラーコレクションコードは、付加情報の１つであり、対応するデータ領域２５に格納されたデータに含まれる誤りを訂正するために使用される。データ領域２５に格納されたデータに含まれる誤りの数が予め定められた閾値以下であるときには、その誤りは、エラーコレクションコードによって訂正されることができる。このとき、データ領域２５から読み出されたデータは、エラーコレクションコードによって正しいデータに修正される。
【００５１】
冗長領域２６は、エラーコレクションコードの他に、“対応論理ブロックアドレス”を格納する。１つのブロックに含まれている少なくとも１つのデータ領域２５に有効なデータが格納されているとき、対応論理ブロックアドレスは、そのブロックが対応付けられている論理ブロックのアドレスを示す。論理ブロックアドレスは、ホストコンピュータ４から与えられるホストアドレスに基づいて決定されるブロックのアドレスである。他方、フラッシュメモリ２内における実際のブロックのアドレスは、物理ブロックアドレスと称される。
【００５２】
１つのブロックに含まれている全てのデータ領域２５に有効なデータが格納されていないときには、そのブロックに含まれている冗長領域２６に、対応論理ブロックアドレスが格納されていない。従って、冗長領域２６に対応論理ブロックアドレスが格納されているか否かを判定することにより、その冗長領域２６が含まれているブロックにてデータが消去されたか否かを判定することができる。冗長領域２６に対応論理ブロックアドレスが格納されていないとき、その冗長領域２６が含まれているブロックは、データが消去された状態にある。
【００５３】
１つのブロックは、３２個のページを含んでいる。フラッシュメモリ２では、データの上書きができない。そのため、１つのページに格納されたデータのみを書き換えるときであっても、そのページが含まれたブロック内の全ページに格納されたデータが、書き換えられなければならない。１つのブロック内の全ページから読み出されたデータの少なくとも一部が変更された後、そのデータは、消去されているブロックの１つに、ブロック単位で書き込まれなければならない。
【００５４】
上記のようにデータを書き換えるにあたっては、書き換えられたデータは、以前に格納されていたブロックとは異なるブロックに書き込まれる。そのため、論理ブロックアドレスと物理ブロックアドレスの間の対応関係は、フラッシュメモリ２にてデータが書き換えられる毎に、動的に変化する。論理ブロックアドレスと物理ブロックアドレスの間の対応関係は、アドレス変換テーブルに記載される。アドレス変換テーブルは、図１に示されているワークエリア８に格納される。アドレス変換テーブルでは、フラッシュメモリ２にてデータが書き換えられる毎に、書き換えられたブロックに対応する格納情報が更新される。
【００５５】
図１において、コントローラ３は、ホストインタフェース制御ブロック５と、マイクロプロセッサ６と、ホストインタフェースブロック７と、ワークエリア８と、バッファ９と、フラッシュメモリインタフェースブロック１０と、ＥＣＣブロック１１と、フラッシュシーケンサブロック１２とを有している。例えば、コントローラ３は、１つの半導体チップ上に集積される。
【００５６】
以下に、コントローラ３の各部位の機能を説明する。ホストインタフェース制御ブロック５は、ホストインタフェースブロック７の動作を制御するための第１の制御ブロックである。マイクロプロセッサ６は、コントローラ３全体の動作を制御するための機能ブロックである。
【００５７】
ホストインタフェースブロック７は、マイクロプロセッサ６による制御のもと、データ、アドレス及びその他の指示等を示す情報を、ホストコンピュータ４との間で交換するための機能ブロックである。フラッシュメモリシステム１がホストコンピュータ４に装着されたとき、フラッシュメモリシステム１とホストコンピュータ４とは、外部バス１３を介して相互に接続される。ホストコンピュータ４からフラッシュメモリシステム１に供給される情報は、ホストインタフェースブロック７を通してコントローラ３の内部に取り込まれる。フラッシュメモリシステム１からホストコンピュータ４に供給される情報は、ホストインタフェースブロック７を通してホストコンピュータ４へ出力される。
【００５８】
ワークエリア８は、フラッシュメモリ２の制御に使用されるデータを一時的に格納するためのメモリモジュールである。例えば、ワークエリア８は、複数のＳＲＡＭ（Static Random Access Memory）セルを含んでいる。
バッファ９は、フラッシュメモリ２から読み出されたデータ及びフラッシュメモリ２に書き込まれるべきデータを、保持するための機能ブロックである。フラッシュメモリ２から読み出されたデータは、ホストコンピュータ４に出力されるまで、バッファ９に保持される。フラッシュメモリ２に書き込まれるべきデータは、フラッシュメモリ２のデータ書込動作の準備ができるまで、バッファ９に保持される。
【００５９】
フラッシュメモリインタフェースブロック１０は、内部バス１４を介して、データ、アドレス、ステータス及び内部コマンド等を示す情報を、フラッシュメモリ２との間で交換するための機能ブロックである。内部コマンドは、コントローラ３からフラッシュメモリ２に与えられるコマンドである。
ＥＣＣブロック１１は、フラッシュメモリ２への書込データに付加されるエラーコレクションコードを生成するための機能ブロックである。加えて、ＥＣＣブロック１１は、フラッシュメモリ２から読み出されたデータに含まれるエラーコレクションコードに基づいて、読出データに含まれる誤りの検出及び訂正を行う。
【００６０】
フラッシュシーケンサブロック１２は、内部コマンドに基づいて、フラッシュメモリ２の動作を制御するための第２の制御ブロックである。フラッシュシーケンサブロック１２は、複数のレジスタ（図示せず）を有している。フラッシュシーケンサブロック１２は、マイクロプロセッサ６による制御のもと、内部コマンドが実行されるときに使用される情報を、複数のレジスタに設定する。複数のレジスタに情報を設定した後、フラッシュシーケンサブロック１２は、各レジスタに設定された情報に基づいて、内部コマンドに従った動作を行う。
【００６１】
以下に、フラッシュメモリ２からバッファ９にデータを読み出すための処理、及び、バッファ９からフラッシュメモリ２にデータを書き込むための処理について、説明する。
図５は、フラッシュメモリ２のメモリ空間３１におけるブロック及びページの割当例を概略的に示している。図５に示されているように、メモリ空間３１は、各々がデータ消去動作における一括処理単位である複数のブロック３１ａ（Ｂ００００〜Ｂ１０２３）に分割されている。各ブロック３１ａは、各々がデータ読出動作及びデータ書込動作における一括処理単位である複数のページ３１ｂ（Ｐ００〜Ｐ３１）に分割されている。各ページ３１ｂは、各々が１バイトである５１２個のデータ領域（Ａ０００〜Ａ５１１）に分割されている。
【００６２】
１０２４個のブロック３１ａ（Ｂ００００〜Ｂ１０２３）は、１つのゾーンとして管理される。フラッシュメモリ２が複数のメモリ空間３１を含んでいるとき、各メモリ空間３１に対応した各ゾーンには、少なくとも１つの消去済ブロックが、データを書込可能とするために確保される。以下では、データを書込可能に設定された消去済ブロックは、書込候補ブロックと称される。データ書込動作では、書込候補ブロックの１つに、データが書き込まれる。
【００６３】
図６は、フラッシュメモリ２のメモリ空間３１と、バッファ９のバッファ空間３２との間でのデータ交換動作を、概略的に示している。図６に示されているバッファ空間３２は、各々が１バイトである５１２個のデータ領域（ＢＦ０００〜ＢＦ５１１）に分割されている。バッファ空間３２は、１バイト単位又は１ワード（２バイト又はより多くのバイト）単位で、フラッシュメモリ２との間でデータを交換する。
【００６４】
図６に示されているポインタレジスタ３３及びジョブレジスタ３４は、ホストコンピュータ４からの指示を格納する。フラッシュメモリ２からバッファ９にデータを読み出すための処理、及び、バッファ９からフラッシュメモリ２にデータを書き込む処理は、ポインタレジスタ３３及びジョブレジスタ３４に格納されている指示に従って、フラッシュシーケンサブロック１２によって制御される。ポインタレジスタ３３は、ページアドレスを設定するためのレジスタである。ジョブレジスタ３４は、データ読出動作、データ書込動作等を示す動作指示を設定するためのレジスタである。
【００６５】
第１の例として、ジョブレジスタ３４に設定された動作指示がデータ読出動作を示すとともに、ページアドレスがポインタレジスタ３３に設定されたとき、フラッシュシーケンサブロック１２が有する複数のレジスタ（図示せず）には、次のような情報が設定される。第１に、内部読出コマンドは、フラッシュシーケンサブロック１２内の予め定められた第１レジスタ（図示せず）に、内部コマンドとして格納される。第２に、ポインタレジスタ３３に設定されているページアドレスにおけるブロックアドレス部分（論理ブロックアドレス）は、フラッシュメモリ２内の対応するブロックアドレス（物理ブロックアドレス）に変換される。変換されたページアドレスは、フラッシュシーケンサブロック１２内の予め定められた第２レジスタ（図示せず）に格納される。
【００６６】
上記のようなデータ読出動作のために設定された情報に基づいて、フラッシュシーケンサブロック１２は、内部コマンドに従ってフラッシュメモリインタフェースブロック１０を制御する。フラッシュメモリインタフェースブロック１０は、内部バス１４を介してフラッシュメモリ２に、内部コマンドを示す情報を供給する。フラッシュメモリインタフェースブロック１０から出力された情報に応答して、フラッシュメモリ２では、フラッシュシーケンサブロック１２の第２レジスタに設定されたページアドレスに対応するデータ領域（Ａ０００〜Ａ５１１）から、格納データが１バイト単位で順次に読み出される。フラッシュメモリ２から読み出されたデータは、バッファ空間３２のデータ領域（ＢＦ０００〜ＢＦ５１１）に順次格納される。例えば、フラッシュシーケンサブロック１２は、フラッシュメモリ２から受けたデータを、バッファ空間３２の開始アドレスから終了アドレスへと向かう順番で、バッファ空間３２のデータ領域（ＢＦ０００〜ＢＦ５１１）に順次格納するように、フラッシュメモリインタフェースブロック１０を制御する。
【００６７】
第２の例として、ジョブレジスタ３４に設定された動作指示がデータ書込動作を示すとともに、ページアドレスがポインタレジスタ３３に設定されたとき、フラッシュシーケンサブロック１２が有する複数のレジスタ（図示せず）には、次のような情報が設定される。第１に、内部書込コマンドは、フラッシュシーケンサブロック１２内の第１レジスタ（図示せず）に、内部コマンドとして格納される。第２に、ポインタレジスタ３３に設定されているページアドレスの下位５ビットであるページ番号部分と、書込候補ブロックのブロックアドレス（物理ブロックアドレス）とに基づいて、ページアドレスが生成される。生成されたページアドレスは、フラッシュシーケンサブロック１２内の第２レジスタ（図示せず）に格納される。
【００６８】
上記のようなデータ書込動作のために設定された情報に基づいて、フラッシュシーケンサブロック１２は、内部コマンドに従ってフラッシュメモリインタフェースブロック１０を制御する。フラッシュメモリインタフェースブロック１０は、内部バス１４を介してフラッシュメモリ２に、内部コマンドを示す情報を供給する。同時に、フラッシュメモリインタフェースブロック１０は、バッファ空間３２のデータ領域（ＢＦ０００〜ＢＦ５１１）に格納されているデータを読み出す。バッファ空間３２から読み出されたデータは、１バイト単位で順次にフラッシュメモリ２へと供給される。例えば、フラッシュシーケンサブロック１２は、バッファ空間３２の開始アドレスから終了アドレスへと向かう順番で、フラッシュメモリ２に転送するためのデータをバッファ空間３２から読み出すように、フラッシュメモリインタフェースブロック１０を制御する。フラッシュメモリインタフェースブロック１０から出力された情報に応答して、フラッシュメモリ２では、フラッシュシーケンサブロック１２の第２レジスタに設定されたページアドレスに対応するデータ領域（Ａ０００〜Ａ５１１）に、コントローラ３から供給されたデータが順次に書き込まれる。
【００６９】
コントローラ３がフラッシュメモリ２における一連のページとデータを交換するときには、“開始ページアドレス”及び“終了ページアドレス”がポインタレジスタ３３に設定されてもよい。フラッシュシーケンサブロック１２内の第２レジスタに設定されるページアドレスの下位５ビットであるページ番号部分は、“開始ページアドレス”から“終了ページアドレス”まで、１ずつカウントアップされる。別の設定として、“開始ページアドレス”及び“ページ数”がポインタレジスタ３３に設定されてもよい。フラッシュシーケンサブロック１２内の第２レジスタに設定されるページ番号部分は、“開始ページアドレス”から１ずつカウントアップされる。カウントアップ動作は、“ページ数”に対応する回数まで実行される。
【００７０】
以下に、フラッシュメモリ２に格納されているデータをホストコンピュータ４へと読み出すための処理、及び、ホストコンピュータ４からフラッシュメモリ２にデータを書き込むための処理について、説明する。
【００７１】
図７は、ホストコンピュータ４のメモリアドレス空間３８と、バッファ９のバッファ空間３２との間でのデータ交換動作を、概略的に示している。図７には、ポインタレジスタ３３及びジョブレジスタ３４も示されている。
バッファ９のバッファ空間３２は、ホストコンピュータ４のメモリアドレス空間３８において、５１２バイトを有するメモリ領域（Ｍ１００００〜Ｍ１０５１１）に割り付けられている。ホストコンピュータ４のメモリアドレス空間３８には、ポインタレジスタ３３及びジョブレジスタ３４にアクセスするためのアドレスが含まれている。メモリアドレス空間３８にてポインタレジスタ３３及びジョブレジスタ３４に割り当てられるアドレスは、ポインタレジスタ３３及びジョブレジスタ３４のデータ容量に応じて、適宜設定されていればよい。ホストコンピュータ４にてポインタレジスタ３３及びジョブレジスタ３４に割り当てられるアドレスは、ホストコンピュータ４のＩ／Ｏアドレス空間に含まれていてもよい。
【００７２】
図８は、ホストコンピュータ４のメモリ領域３５と、フラッシュメモリ２のメモリ空間３１との間でのデータ交換動作を、概略的に示している。フラッシュメモリ２から読み出されたデータ及びフラッシュメモリ２に書き込まれるべきデータは、バッファ９のバッファ空間３２を介して、メモリ領域３５とメモリ空間３１との間で交換される。バッファ空間３２は、ホストコンピュータ４のメモリアドレス空間３８において、５１２バイトを有するメモリ領域３５に割り付けられている。フラッシュメモリ２のメモリ空間３１に格納されているデータを読み出すため、及び、フラッシュメモリ２のメモリ空間３１にデータを書き込むために、ホストコンピュータ４は、バッファ空間３２に割り付けられているメモリ領域３５にアクセスする。コントローラ３は、ポインタレジスタ３３及びジョブレジスタ３４における設定情報に基づいて、バッファ空間３２とメモリ空間３１の全データ領域との間で、データを交換できるようにする。
【００７３】
コントローラ３がバッファ空間３２とフラッシュメモリ２のメモリ空間３１との間でデータを交換するとき、コントローラ３に含まれるアドレスカウンタ３６は、１ページ分（５１２バイト）のデータが順次に交換されるように制御する。例えば、アドレスカウンタ３６は、フラッシュシーケンサブロック１２に含まれている。他方、ホストコンピュータ４とバッファ９との間でデータが交換されるときには、アドレスバッファ３７を用いることにより、通常のスタティックＲＡＭと同様に、５１２バイトを有するバッファ空間３２における各データ領域が、所定のアドレスバスによって供給されるアドレス信号及び制御信号に基づいて、ランダムにアクセスされる。例えば、アドレスバッファ３７は、ホストインタフェース制御ブロック５に含まれている。
【００７４】
バッファ空間３２のデータ容量は５１２（＝２９）バイトである。従って、バッファ空間３２の各データ領域は、９ビットのアドレスによって特定されることができる。ホストコンピュータ４のメモリ領域３５から供給されるアドレスデータの下位９ビットは、バッファ空間３２における各データ領域のアドレスを示す。バッファ空間３２における各データ領域のアドレスを示すデータは、アドレスバッファ３７にセットされる。アドレスバッファ３７にセットされたアドレスデータに基づいて、ホストインタフェース制御ブロック５は、ホストコンピュータ４がバッファ空間３２の各データ領域にアクセスすることを可能にする。ホストコンピュータ４のメモリ領域３５から供給されるアドレスデータのうちでアドレスバッファ３７にセットされなかったデータは、バッファ空間３２に保持されているデータがホストコンピュータ４からの要求に適合しているか否かを判定するために使用される。この判定処理は、例えば、マイクロプロセッサ６によって実行される。
【００７５】
ホストコンピュータ４がワード（１６ビット）単位でバッファ空間３２にアクセスするときには、ホストコンピュータ４のメモリ空間３５から供給されるアドレスデータの下位８ビットがアドレスバッファ３７にセットされてもよい。バッファ空間３２の各データ領域は、８ビットのアドレスによって特定されることができる。このときにも、ホストコンピュータ４のメモリ領域３５から供給されるアドレスデータのうちでアドレスバッファ３７にセットされなかったデータに基づいて、コントローラ３は、バッファ空間３２に保持されているデータがホストコンピュータ４からの要求に適合しているか否かを判定することができる。
【００７６】
以下に、図９から図１２に示されるタイミング図を参照することにより、ホストコンピュータ４のメモリ領域３５によるバッファ空間３２からのデータ読出動作と、バッファ空間３２へのデータ書込動作について、説明する。
【００７７】
図９は、ホストコンピュータ４のメモリ領域３５におけるデータ読出サイクルを示すタイミング図である。ホストコンピュータ４は、メモリ領域３５を介して所定のアドレスバスにアドレス信号ＡＤＲを出力する。この出力に対応して、チップイネーブル信号ＣＥＮ及びアウトプットイネーブル信号ＯＥＮは低レベルになる。アドレス信号ＡＤＲが出力されている期間では、チップイネーブル信号ＣＥＮ及びアウトプットイネーブル信号ＯＥＮが低レベルに設定される。バッファ９では、アドレス信号ＡＤＲによって指定されたアドレスを有するバッファ空間３２のデータ領域に格納されているデータが読み出される。読み出されたデータは、データ信号ＤＡＴＡとして、ホストインタフェースブロック７を介して、ホストコンピュータ４へと出力される。ホストインタフェース制御ブロック５は、ホストコンピュータ４へとデータ信号ＤＡＴＡを出力するために、ホストコンピュータ４から供給されたアドレス信号ＡＤＲによって指定されたアドレスを有するバッファ空間３２のデータ領域から格納データを読み出すように、ホストインタフェースブロック７を制御する。図９において、アドレス信号ＡＤＲによってアドレスＡ０が指定されたことに応答して、データＤ０を示すデータ信号ＤＡＴＡが出力される。アドレス信号ＡＤＲによってアドレスＡ１が指定されたことに応答して、データＤ１を示すデータ信号ＤＡＴＡが出力される。
【００７８】
図１０は、ホストコンピュータ４がバッファ９から連続的に格納データを読み出すための動作を示すタイミング図である。図１０において、ホストコンピュータ４は、アドレスＡ’からアドレスＡ’＋３を示すアドレス信号ＡＤＲを、連続してコントローラ３に出力する。アドレス信号ＡＤＲが連続して出力されている期間では、チップイネーブル信号ＣＥＮ及びアウトプットイネーブル信号ＯＥＮが低レベルに設定される。バッファ９では、アドレス信号ＡＤＲによって指定されたアドレスＡ’−Ａ’＋３を有するバッファ空間３２のデータ領域に格納されているデータが順次に読み出される。読み出されたデータは、データ信号ＤＡＴＡとして、ホストコンピュータ４へと順次に出力される。
【００７９】
図１０において、アドレス信号ＡＤＲによってアドレスＡ’が指定されたことに応答して、データＤ０’を示すデータ信号ＤＡＴＡが出力される。アドレス信号ＡＤＲによってアドレスＡ’＋１が指定されたことに応答して、データＤ１’を示すデータ信号ＤＡＴＡが出力される。アドレス信号ＡＤＲによってアドレスＡ’＋２が指定されたことに応答して、データＤ２’を示すデータ信号ＤＡＴＡが出力される。アドレス信号ＡＤＲによってアドレスＡ’＋３が指定されたことに応答して、データＤ３’を示すデータ信号ＤＡＴＡが出力される。
【００８０】
図１１は、ホストコンピュータ４のメモリ領域３５及びバッファ９のバッファ空間３２におけるデータ書込サイクルを示すタイミング図である。ホストコンピュータ４は、メモリ領域３５を介して、所定のアドレスバスにアドレス信号ＡＤＲを出力し、所定のデータバスにデータ信号ＤＡＴＡを出力する。このアドレス信号ＡＤＲ及びデータ信号ＤＡＴＡの出力に対応して、チップイネーブル信号ＣＥＮは低レベルに設定される。アドレス信号ＡＤＲ及びデータ信号ＤＡＴＡが出力されている期間において、チップイネーブル信号ＣＥＮが低レベルになる。アドレス信号ＡＤＲ、データ信号ＤＡＴＡ及び低レベルのチップイネーブル信号ＣＥＮが出力されている期間において、ライトイネーブル信号ＷＥＮが低レベルから高レベルに変化する。
【００８１】
ライトイネーブル信号ＷＥＮの立ち上がりエッジに応答して、データ信号ＤＡＴＡが、アドレス信号ＡＤＲで指定されたアドレスを有するバッファ空間３２のデータ領域に取り込まれる。ホストインタフェース制御ブロック５は、ホストコンピュータ４から供給されたアドレス信号ＡＤＲによって指定されたアドレスを有するメモリ空間３１のデータ領域に、ホストコンピュータ４から供給されたデータ信号ＤＡＴＡによって示されるデータを書き込むように、ホストインタフェースブロック７を制御する。図１１では、データ信号ＤＡＴＡによって示されるデータＤ０が、アドレス信号ＡＤＲによって指定されたアドレスＡ０を有するデータ領域に格納される。データ信号ＤＡＴＡによって示されるデータＤ１は、アドレス信号ＡＤＲによって指定されたアドレスＡ１を有するデータ領域に格納される。
【００８２】
図１２は、ホストコンピュータ４がバッファ９に連続的にデータを書き込むための動作を示すタイミング図である。図１２において、ホストコンピュータ４は、アドレスＡ’からアドレスＡ’＋３を示すアドレス信号ＡＤＲを、連続してコントローラ３に出力する。アドレスＡ’を指定するアドレス信号が出力されるときには、データＤ０’を示すデータ信号ＤＡＴＡが出力される。アドレスＡ’＋１を指定するアドレス信号ＡＤＲが出力されるときには、データＤ１’を示すデータ信号ＤＡＴＡが出力される。アドレスＡ’＋２を指定するアドレス信号ＡＤＲが出力されるときには、データＤ２’を示すデータ信号ＤＡＴＡが出力される。アドレスＡ’＋３を指定するアドレス信号ＡＤＲが出力されるときには、データＤ３’を示すデータ信号ＤＡＴＡが出力される。アドレス信号ＡＤＲが連続して出力されている期間において、チップイネーブル信号ＣＥＮが低レベルになる。アドレス信号ＡＤＲ、データ信号ＤＡＴＡ及び低レベルのチップイネーブル信号ＣＥＮが出力されている期間において、ホストコンピュータ４は、ライトイネーブル信号ＷＥＮを低レベルから高レベルにさせる。ライトイネーブル信号ＷＥＮの立ち上がりエッジに応答して、データ信号ＤＡＴＡが、アドレス信号ＡＤＲで指定されたアドレスを有するバッファ空間３２のデータ領域に取り込まれる。
【００８３】
図１２では、データ信号ＤＡＴＡによって示されるデータＤ０’が、アドレス信号ＡＤＲによって指定されたアドレスＡ’を有するデータ領域に格納される。データ信号ＤＡＴＡによって示されるデータＤ１’は、アドレス信号ＡＤＲによって指定されたアドレスＡ’＋１を有するデータ領域に格納される。データ信号ＤＡＴＡによって示されるデータＤ２’は、アドレス信号ＡＤＲによって指定されたアドレスＡ’＋２を有するデータ領域に格納される。データ信号ＤＡＴＡによって示されるデータＤ３’は、アドレス信号ＡＤＲによって指定されたアドレスＡ’＋３を有するデータ領域に格納される。
【００８４】
フラッシュメモリ２のメモリ空間３１においてポインタレジスタ３３によって指定されたページアドレスを有するページ３１ｂ（Ｐ００〜Ｐ３１）と、バッファ９のバッファ空間３２との間では、バッファ空間３２の先頭から末尾まで、順次にデータが交換される。言い換えると、フラッシュメモリ２とコントローラ３との間でのデータ交換は、フラッシュメモリ２におけるページを単位として行われる。ホストコンピュータ４は、メモリ領域３５にアクセスすることにより、バッファ９のバッファ空間３２に含まれる任意のデータ領域との間でランダムにデータを交換することができる。バッファ９のバッファ空間３２は、フラッシュメモリ２のメモリ空間３１における１つのページと同様に、５１２バイトの記憶容量を有している。従って、コントローラ３は、簡単な構成で、ホストコンピュータ４にフラッシュメモリ２への柔軟なアクセスを提供することができる。コントローラ３によって提供されるフラッシュメモリ２へのメモリアクセスは、通常のスタティックＲＡＭへのアクセスと類似している。
【００８５】
本発明は、様々な変形及び応用が可能である。例えば、コントローラ３は、フラッシュメモリシステム１とは独立して、フラッシュメモリ２とホストコンピュータ４との間でのデータ交換を制御してもよい。コントローラ３は、ホストコンピュータ４に内蔵されていてもよい。ポインタレジスタ３３及びジョブレジスタ３４は、ＳＲＡＭやＤＲＡＭ（Dynamic RAM）などといった、ホストコンピュータ４からのランダムアクセスが可能な任意のメモリに置き換えられてもよい。
【図面の簡単な説明】
【００８６】
【図１】本発明の実施の形態に係るフラッシュメモリシステムの一例を示すブロック図である。
【図２】メモリセルの構造の一例を概略的に示す図である。
【図３】書込状態となっているメモリセルの断面図である。
【図４】フラッシュメモリにおけるアドレス空間の概略図である。
【図５】フラッシュメモリのメモリ空間におけるブロック及びページの割当例の概略図である。
【図６】フラッシュメモリのメモリ空間とバッファのバッファ空間との間でのデータ交換動作の概略図である。
【図７】ホストコンピュータのメモリアドレス空間とバッファのバッファ空間との間でのデータ交換動作の概略図である。
【図８】ホストコンピュータのメモリ領域とフラッシュメモリのメモリ空間との間でのデータ交換動作の概略図である。
【図９】ホストコンピュータのメモリ領域におけるデータ読出サイクルを示すタイミング図である。
【図１０】バッファからホストコンピュータに連続的に格納データを読み出すサイクルを示すタイミング図である。
【図１１】ホストコンピュータのメモリ領域におけるデータ書込サイクルを示すタイミング図である。
【図１２】ホストコンピュータによりバッファに連続的に格納データを書き込むサイクルを示すタイミング図である。
【符号の説明】
【００８７】
１    フラッシュメモリシステム
２、３１  フラッシュメモリ
３    コントローラ
４、３５  ホストコンピュータ
５    ホストインタフェース制御ブロック
６    マイクロプロセッサ
７    ホストインタフェースブロック
８    ワークエリア
９，３２  バッファ
１０  フラッシュメモリインタフェースブロック
１１  ＥＣＣブロック
１２  フラッシュシーケンサブロック
１３  外部バス
１４  内部バス
１６  メモリセル
１７  Ｐ型半導体基板
１８  Ｎ型ソース拡散領域
１９  Ｎ型ドレイン拡散領域
２０  トンネル酸化膜
２１  フローティングゲート電極
２２  絶縁膜
２３  コントロールゲート電極
２４  チャネル
２５  データ領域
２６  冗長領域
３３  ポインタレジスタ
３４  ジョブレジスタ
３６  アドレスカウンタ
３７  アドレスバッファ
３８  メモリアドレス空間    
【図１】
2005025733.tif 000003
【図２】
2005025733.tif 000004
【図３】
2005025733.tif 000005
【図４】
2005025733.tif 000006
【図５】
2005025733.tif 000007
【図６】
2005025733.tif 000008
【図７】
2005025733.tif 000009
【図８】
2005025733.tif 000010
【図９】
2005025733.tif 000011
【図１０】
2005025733.tif 000012
【図１１】
2005025733.tif 000013
【図１２】
2005025733.tif 000014